These changes have been mostly auto-generated with: find . -type f -print0 | xargs -0 perl -pi -e 's/ +$//' Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
220 lines
6.3 KiB
TeX
220 lines
6.3 KiB
TeX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% 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 |