summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/simplebnf/simplebnf-doc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/simplebnf/simplebnf-doc.tex')
-rw-r--r--macros/latex/contrib/simplebnf/simplebnf-doc.tex82
1 files changed, 82 insertions, 0 deletions
diff --git a/macros/latex/contrib/simplebnf/simplebnf-doc.tex b/macros/latex/contrib/simplebnf/simplebnf-doc.tex
new file mode 100644
index 0000000000..e30c524e85
--- /dev/null
+++ b/macros/latex/contrib/simplebnf/simplebnf-doc.tex
@@ -0,0 +1,82 @@
+\documentclass[a4paper]{article}
+
+\usepackage{fontspec}
+\setmainfont{Linux Libertine}
+\setsansfont{Libertinus Sans}
+\setmonofont{Inconsolata}
+
+\usepackage{hyperref}
+
+\usepackage{tcolorbox}
+\tcbuselibrary{listings,breakable}
+\tcbset{listing engine=listings,colframe=black,colback=white,size=small}
+\NewDocumentEnvironment {exampleside} {}
+ { \tcblisting{listing side text,righthand width=.4\textwidth} }
+ { \endtcblisting }
+
+\NewDocumentEnvironment { presentcommand } { b }
+ {%
+ \vspace*{0.5\baselineskip}\noindent\fbox{%
+ \begin{minipage}{\dimexpr\textwidth-2\fboxsep-2\fboxrule}
+ #1
+ \end{minipage}}\vspace*{0.5\baselineskip}
+ }
+ { }
+
+\NewDocumentCommand \cmd { m } { \texttt{\textbackslash#1} }
+\NewDocumentCommand \env { m m }
+ {
+ \texttt{%
+ \textbackslash begin\{#1\} \textrm{#2} %
+ \textbackslash end\{#1\}%
+ }%
+ }
+
+\usepackage{simplebnf}
+
+\title{%
+ \textsf{simplebnf} --- A simple package to format Backus-Naur form%
+ \footnote{This file describes v0.1.0.}}
+\author{Jay Lee\footnote{E-mail: %
+ \href{mailto:jaeho.lee@snu.ac.kr}{\texttt{jaeho.lee@snu.ac.kr}}}}
+\date{2019/12/23}
+
+\begin{document}
+\maketitle
+
+\begin{presentcommand}
+ \cmd{bnfexpr} \cmd{bnfannot}
+\end{presentcommand}
+The \cmd{bnfexpr} and the \cmd{bnfannot} commands are simply wrappers around
+\cmd{texttt} and \cmd{textit}, respectively.
+
+\begin{presentcommand}
+ \env{bnfgrammar}{text}
+\end{presentcommand}
+The \textit{term} argument of the \texttt{bnfgrammar} environment is the term
+to define a grammar.
+The text inside the environment should be formatted as:
+\begin{equation*}
+ \bnfexpr{term} \Coloneqq \langle\textit{keypairs}\rangle
+\end{equation*}
+where each pair of \textit{keypairs} represents an alternative syntactic form
+of the \textit{term} and its annotation, delimited with a colon(\verb/:/).
+If you don't need annotations, simply omit the colons and annotations
+altogether.
+
+A sample code and the result is shown below:
+\begin{exampleside}
+\begin{bnfgrammar}
+ v ::= n | $\lambda$x.e
+\end{bnfgrammar}
+
+\begin{bnfgrammar}
+ C ::=
+ []: hole
+ | C\,e: application 1
+ | v\,C: application 2
+ | C\,+\,e: addition 1
+ | v\,+\,C: addition 2
+\end{bnfgrammar}
+\end{exampleside}
+\end{document}