%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % P4 Cheat Sheet % % By P4.org % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass{article} \usepackage{fontspec} \setmainfont{Utopia} \setsansfont{Free Helvetian} \setmonofont{Liberation Mono} \usepackage[landscape]{geometry} \usepackage{url} \usepackage{multicol} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{tikz} \usetikzlibrary{shapes} \usetikzlibrary{decorations.pathmorphing} \usepackage{amsmath,amssymb} \usepackage{colortbl} \usepackage{xcolor} \usepackage{mathtools} \usepackage{amsmath,amssymb} \usepackage{enumitem} % Define Colors \usepackage{color} \definecolor{eclipseBlue}{RGB}{42,0.0,255} \definecolor{eclipseGreen}{RGB}{63,127,95} \definecolor{eclipsePurple}{RGB}{127,0,85} \usepackage{listings} % Define Language \lstdefinelanguage{p4} { % list of keywords morekeywords={ action, apply, bit, bool, const, control, default, else, enum, error, extern, exit, false, header, if, in, inout, int, match_kind, package, parser, out, return, select, state, struct, switch, table, transition, true, tuple, typedef, varbit, verify, void, }, sensitive=true, % keywords are case-sensitive morecomment=[l]{//}, % l is for line comment morecomment=[s]{/*}{*/}, % s is for start and end delimiter morestring=[b]" % defines that strings are enclosed in double quotes } % Set Language \lstset{ language={p4}, basicstyle=\small\ttfamily, % Global Code Style captionpos=b, % Position of the Caption (t for top, b for bottom) extendedchars=true, % Allows 256 instead of 128 ASCII characters tabsize=2, % number of spaces indented when discovering a tab columns=fixed, % make all characters equal width keepspaces=true, % does not ignore spaces to fit width, convert tabs to spaces showstringspaces=false, % lets spaces in strings appear as real spaces breaklines=true, % wrap lines if they don't fit commentstyle=\color{eclipseBlue}, % style of comments keywordstyle=\color{eclipsePurple}, % style of keywords stringstyle=\color{eclipseGreen}, % style of strings } \title{P4 Cheat Sheet} \usepackage[brazilian]{babel} \advance\topmargin-.8in \advance\textheight3in \advance\textwidth3in \advance\oddsidemargin-1.5in \advance\evensidemargin-1.5in \parindent0pt \parskip2pt \newcommand{\hr}{\centerline{\rule{3.5in}{1pt}}} %\colorbox[HTML]{e4e4e4}{\makebox[\textwidth-2\fboxsep][l]{texto} \begin{document} \begin{center}{\huge{\bf \textsf{P4 Language Cheat Sheet}}}\\[.5em] %{\large By P4.org} \end{center} \begin{multicols*}{3} \tikzstyle{mybox} = [draw=black, fill=white, very thick, rectangle, rounded corners, inner sep=10pt, inner ysep=10pt] \tikzstyle{fancytitle} =[fill=black, text=white, font=\bfseries] \tikzstyle{mybox2} = [draw=black, fill=white, very thick, rectangle split, rectangle split parts=2, rounded corners, inner sep=10pt, inner ysep=10pt] \tikzstyle{fancytitle2} =[fill=black, text=white, font=\bfseries] %------------ DATA TYPES --------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/data_types.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {Basic Data Types}; \end{tikzpicture} %------------ P4 Parsing --------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/parsers.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {Parsing}; \end{tikzpicture} %------------ Expressions --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/expressions.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {Statements \& Expressions}; \end{tikzpicture} %------------ Actions --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/actions.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {Actions}; \end{tikzpicture} %------------ Tables --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/tables.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {Tables}; \end{tikzpicture} %------------ Control Flow --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/control_flow.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {Control Flow}; \end{tikzpicture} %------------ Deparsing --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/deparsing.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {Deparsing}; \end{tikzpicture} %------------ Header Stacks --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/header_stack.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {Header Stacks}; \end{tikzpicture} %------------ Advanced Parsing --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/adv_parsing.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {Advanced Parsing}; \end{tikzpicture} %------------ V1Model - Architecture --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/architecture.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {V1Model - Architecture}; \end{tikzpicture} %------------ V1Model - Standard Metadata --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/v1model_std_metadata.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {V1Model - Standard Metadata}; \end{tikzpicture} %------------ V1Model - Counter Externs --------------------- \begin{tikzpicture} \node [mybox] (box){% \begin{minipage}{0.3\textwidth} \lstinputlisting{src/counters.txt} \end{minipage} }; \node[fancytitle, right=10pt] at (box.north west) {V1Model - Counters \& Registers}; \end{tikzpicture} \end{multicols*} \end{document} Contact GitHub API Training Shop Blog About © 2016 GitHub, Inc. Terms Privacy Security Status Help