63 lines
3.7 KiB
TeX
63 lines
3.7 KiB
TeX
\documentclass[a4paper]{paper}
|
|
\usepackage[margin=2.5cm]{geometry}
|
|
\usepackage{enumitem}
|
|
|
|
\def\threedigits#1{%
|
|
\ifnum#1<100 0\fi
|
|
\ifnum#1<10 0\fi
|
|
\number#1}
|
|
|
|
\pagestyle{empty}
|
|
|
|
\begin{document}
|
|
\section{Grammar}
|
|
\begin{center}
|
|
\begin{tabular}{|lcl|}
|
|
\hline
|
|
\textit{program} & $\rightarrow$ & \texttt{hello} \texttt{|} \textit{statements} \texttt{goodbye} \texttt{|} \\ \hline \hline
|
|
\textit{statements} & $\rightarrow$ & \\ \hline
|
|
\textit{statements} & $\rightarrow$ & \textit{statement} \texttt{|} \textit{statements} \\ \hline\hline
|
|
\textit{statement} & $\rightarrow$ & \texttt{skip} \\ \hline
|
|
\textit{statement} & $\rightarrow$ & \texttt{maybe} \textit{statement}\\ \hline
|
|
\textit{statement} & $\rightarrow$ & \texttt{do} \textit{command}\\ \hline
|
|
\textit{statement} & $\rightarrow$ & \texttt{[} \textit{statements} \texttt{]}\\ \hline
|
|
\textit{statement} & $\rightarrow$ & \texttt{set} \textit{expression} \texttt{->} \textbf{id} \\ \hline
|
|
\textit{statement} & $\rightarrow$ & \texttt{define} \textbf{function} \texttt{<} \textbf{int} \texttt{>} \texttt{as} \textit{statement} \\ \hline
|
|
\textit{statement} & $\rightarrow$ & \texttt{return} \textit{expression} \\ \hline\hline
|
|
\textit{command} & $\rightarrow$ & \textit{statement} \texttt{if} \textit{expression} \\ \hline
|
|
\textit{command} & $\rightarrow$ & \textit{statement} \texttt{if} \textit{expression} \textit{else} \textit{statement} \\ \hline
|
|
\textit{command} & $\rightarrow$ & \textit{statement} \texttt{because} \textit{expression} \\ \hline
|
|
\textit{command} & $\rightarrow$ & \textit{statement} \texttt{until} \textit{expression} \\ \hline
|
|
\textit{command} & $\rightarrow$ & \textbf{builtin} \texttt{<} \textit{expressions} \texttt{>} \\ \hline
|
|
\textit{command} & $\rightarrow$ & \texttt{"} \textbf{function} \texttt{" <} \textit{expressions} \texttt{>} \\ \hline\hline
|
|
\textit{expressions} & $\rightarrow$ & \\ \hline
|
|
\textit{expressions} & $\rightarrow$ & \textit{expression} \texttt{;} \textit{expressions} \\ \hline\hline
|
|
\textit{expression} & $\rightarrow$ & \textbf{string} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \textbf{int} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \textbf{float} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \textbf{boolean} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \texttt{\{} \textit{expressions} \texttt{\}} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \textit{expression} \texttt{\{} \textit{expression} \texttt{\}} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \texttt{(} \textit{expression} \texttt{)} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \textit{expression} \textbf{binop} \textit{expression} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \textbf{unop} \textit{expression} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \texttt{variable} \textbf{id}\\ \hline
|
|
\textit{expression} & $\rightarrow$ & \texttt{argument} \textbf{arg} \\ \hline
|
|
\textit{expression} & $\rightarrow$ & \textit{statement} \\ \hline
|
|
\end{tabular}
|
|
\end{center}
|
|
|
|
\section{Errors}
|
|
\begin{enumerate}[label={\textbf{E\protect\threedigits{\theenumi}:}}, leftmargin = *]
|
|
\item No greeting
|
|
\item No valediction
|
|
\item Unexpected token
|
|
\item Random compiler error
|
|
\item Wrong number of arguments for builtin
|
|
\end{enumerate}
|
|
\begin{enumerate}[label={\textbf{C\protect\threedigits{\theenumi}:}}, leftmargin = *]
|
|
\item Because assertion incorrect
|
|
\item Unknown error
|
|
\item Incorrect type
|
|
\end{enumerate}
|
|
\end{document} |