gombaila/src/main/resources/docs/grammer.tex

53 lines
1.5 KiB
TeX

%! Author = manuel
%! Date = 24.03.24
% Preamble
\documentclass[11pt]{article}
% Packages
\usepackage{amsmath}
% Document
\begin{document}
\begin{align}
[\text{Prog}]
&\to [\text{Stmt}]^* \\
[\text{Stmt}] &\to
\begin{cases}
\text{exit}([\text{Expr}]); \\
\text{let}\ \text{ident} = [\text{Expr}]; \\
\text{ident} = \text{[Expr]}; \\
\text{if} ([\text{Expr}])[\text{Scope}]\text{[IfPred]}\\
[\text{Scope}]
\end{cases} \\
\text{[Scope]} &\to {[\text{Stmt}]^*} \\
\text{[IfPred]} &\to
\begin{cases}
\text{elif}(\text{[Expr]})\text{[Scope]}\text{[IfPred]} \\
\text{else}\text{[Scope]} \\
\epsilon
\end{cases} \\
[\text{Expr}] &\to
\begin{cases}
[\text{Term}]
\\
[\text{BinExpr}]
\end{cases} \\
[\text{BinExpr}] &\to
\begin{cases}
[\text{Expr}] \^\ [\text{Expr}] & \text{prec} = 3 \\
[\text{Expr}] * [\text{Expr}] & \text{prec} = 2 \\
[\text{Expr}] / [\text{Expr}] & \text{prec} = 2 \\
[\text{Expr}] \% [\text{Expr}] & \text{prec} = 2 \\
[\text{Expr}] + [\text{Expr}] & \text{prec} = 1 \\
[\text{Expr}] - [\text{Expr}] & \text{prec} = 1 \\
\end{cases} \\
[\text{Term}] &\to
\begin{cases}
\text{int\_lit} \\
\text{ident} \\
([\text{Expr}])
\end{cases}
\end{align}
\end{document}