Files
centvrion/language/main.tex
2022-10-18 16:44:36 +02:00

90 lines
4.3 KiB
TeX

\documentclass[a4paper]{article}
\usepackage[margin=1in]{geometry}
\usepackage{fontspec}
\setmonofont[Scale=0.7]{Hurmit Nerd Font Mono}
\newcommand{\languageline}[2]{%
\textit{#1} & $\to$ & #2
}
\begin{document}
\begin{table}[ht]
\begin{center}
\begin{tabular}{|lcl|}
\hline
\multicolumn{3}{|c|}{\textbf{Top-level}} \\ \hline
\languageline{program}{\textit{optional-newline} \textit{module-calls} \textit{statements}} \\ \hline
\languageline{module-calls}{\textit{module-call} \textbf{newline} \textit{module-calls}} \\
\languageline{module-calls}{} \\ \hline
\languageline{module-call}{\texttt{CUM} \textbf{module-name}} \\ \hline
\languageline{statements}{\textit{statement} \textbf{newline} \textit{statements}} \\
\languageline{statements}{} \\ \hline
\languageline{optional-newline}{\textbf{newline}} \\
\languageline{optional-newline}{} \\ \hline \hline
\multicolumn{3}{|c|}{\textbf{Statements}} \\ \hline
\languageline{statement}{\textit{expression}} \\
\languageline{statement}{\texttt{DESIGNA} \textbf{id} \texttt{VT} \textit{expression}} \\
\languageline{statement}{\texttt{DEFINI} \textbf{id} \texttt{(} \textit{optional-ids} \texttt{)} \textit{scope}} \\
\languageline{statement}{\textit{if-statement}} \\
\languageline{statement}{\texttt{DVM} \textit{expression} \texttt{FACE} \textit{scope}} \\
\languageline{statement}{\texttt{PER} \textbf{id} \texttt{IN} \textit{expression} \texttt{FACE} \textit{scope}} \\
\languageline{statement}{\texttt{DONICVM} \textbf{id} \texttt{VT} \textit{expression} \texttt{VSQVE} \textit{expression} \texttt{FACE} \textit{scope}} \\
\languageline{statement}{\texttt{REDI(} \textit{optional-expressions} \texttt{)}} \\
\languageline{statement}{\texttt{ERVMPE}} \\ \hline
\languageline{if-statement}{\texttt{SI} \textit{expression} \textit{scope}} \\
\languageline{if-statement}{\texttt{SI} \textit{expression} \textit{scope} \textit{optional-newline} \textit{else-statement}} \\ \hline
\languageline{else-statement}{\texttt{ALVID} \textit{scope}} \\
\languageline{else-statement}{\texttt{ALVID} \textit{if-statement}} \\ \hline
\languageline{scope}{\textit{optional-newline} \texttt{\{} \textbf{newline} \textit{statements} \texttt{\}}} \\ \hline \hline
\multicolumn{3}{|c|}{\textbf{Expressions}} \\ \hline
\languageline{expression}{\texttt{(} \textit{expression} \texttt{)}} \\
\languageline{expression}{\textbf{id}} \\
\languageline{expression}{\textbf{builtin} \texttt{(} \textit{optional-expressions} \texttt{)}} \\
\languageline{expression}{\texttt{INVOCA} \textbf{id} \texttt{(} \textit{optional-expressions} \texttt{)}} \\
\languageline{expression}{\textit{literal}} \\
\languageline{expression}{\textit{expression} \texttt{[} \textit{expression} \texttt{]}} \\
\languageline{expression}{\textit{expression} \textbf{binop} \textit{expression}} \\
\languageline{expression}{\textbf{unop} \textit{expression}} \\ \hline
\languageline{literal}{\textbf{string}} \\
\languageline{literal}{\textbf{numeral}} \\
\languageline{literal}{\textbf{bool}} \\
\languageline{literal}{\texttt{[} \textit{optional-expressions} \texttt{]}} \\
\languageline{literal}{\texttt{[} \textit{expression} \texttt{VSQVE} \textit{expression} \texttt{]}} \\ \hline \hline
\multicolumn{3}{|c|}{\textbf{Lists}} \\ \hline
\languageline{optional-ids}{ids} \\
\languageline{optional-ids}{} \\ \hline
\languageline{ids}{\textbf{id}, \textit{ids}} \\
\languageline{ids}{\textbf{id}} \\ \hline
\languageline{optional-expressions}{expressions} \\
\languageline{optional-expressions}{} \\ \hline
\languageline{expressions}{\textit{expression}, \textit{expressions}} \\
\languageline{expressions}{\textit{expression}} \\ \hline
\end{tabular}
\end{center}
\end{table}
\begin{itemize}
\item \textbf{newline}: \\ Newlines are combined, so a single newline is the same as multiple.
\item \textbf{module-name}:
\item \textbf{id}:
\item \textbf{builtin}:
\item \textbf{string}:
\item \textbf{numeral}:
\item \textbf{bool}:
\end{itemize}
\end{document}