From e137c28e81014dc75e80a795bc6e118c7daf0566 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sun, 24 Mar 2024 14:40:20 +0100 Subject: [PATCH] Add grammar.tex, shamelessly copying from Pixeled. But the grammar is not exactly as implemented here, must revise it. --- .gitignore | 1 + src/main/resources/docs/grammer.tex | 52 +++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/main/resources/docs/grammer.tex diff --git a/.gitignore b/.gitignore index 92322c4..68633f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea/ target/ +out/ diff --git a/src/main/resources/docs/grammer.tex b/src/main/resources/docs/grammer.tex new file mode 100644 index 0000000..b3f913a --- /dev/null +++ b/src/main/resources/docs/grammer.tex @@ -0,0 +1,52 @@ +%! 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}