Files
centvrion/language/main.tex

93 lines
5.1 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{)} \texttt{VT} \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} \texttt{TVNC} \textit{scope}} \\
\languageline{if-statement}{\texttt{SI} \textit{expression} \texttt{TVNC} \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}
\newpage
\begin{itemize}
\item \textbf{newline}: \\ Newlines are combined, so a single newline is the same as multiple.
\item \textbf{module-name}: \\ Modules are flags given to the interpreter/compiler, to let it know you want to be using certain rules, functions, or features.
\item \textbf{id}: \\ Variable. Can only consist of lowercase characters and underscores, but not the letters j, u, or w.
\item \textbf{builtin}: \\ Builtin functions are uppercase latin words.
\item \textbf{string}: \\ Any text encased in " characters.
\item \textbf{numeral}: \\ Roman numerals consisting of the uppercase characters I, V, X, L, C, D, and M. Can also include underscore if the module MAGNVM.
\item \textbf{bool}: \\ VERITAS or FALSITAS.
\item \textbf{binop}: \\ Binary operators: \texttt{+}, \texttt{-}, \texttt{*}, \texttt{/}, \texttt{EST} (equality), \texttt{MINVS} (<), \texttt{PLVS} (>), \texttt{ET} (and), \texttt{AVT} (or), \texttt{:} (string concatenation).
\item \textbf{unop}: \\ Unary operators: \texttt{-} (negation), \texttt{NON} (boolean not).
\end{itemize}
\end{document}