diff options
author | Norbert Preining <norbert@preining.info> | 2020-01-12 03:00:58 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-01-12 03:00:58 +0000 |
commit | b0cb2086fcb39d89f7f5f6b8a9eea09f78272b52 (patch) | |
tree | 6b5e775789bf238282cfd6aa98a49d173834c74b /macros/latex/contrib/simplebnf/simplebnf-doc.tex | |
parent | 005d294a77f2494010cde294f7dac04af93c194d (diff) |
CTAN sync 202001120300
Diffstat (limited to 'macros/latex/contrib/simplebnf/simplebnf-doc.tex')
-rw-r--r-- | macros/latex/contrib/simplebnf/simplebnf-doc.tex | 82 |
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} |