From 9e1149086929874c9e7bd09daaef22f55432f750 Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 27 May 2007 23:22:15 -0400 Subject: [PATCH] added draft LaTeX grammar darcs-hash:20070528032215-5007d-3aab6ccebffd05841695d7ada0836d2554997acc.gz --- tests/latex.g | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 tests/latex.g diff --git a/tests/latex.g b/tests/latex.g new file mode 100644 index 0000000..73bd7d3 --- /dev/null +++ b/tests/latex.g @@ -0,0 +1,52 @@ +// draft grammar for [La]TeX +// note that this is approximate; in reality TeX has no grammar + +Text = () + | Token + | Text:: `Text Token + | Text:: `Text (WS:: ws) Token + | Text:: `Text (BlankLine:: br) Token + +Token = Command + | Comment:: "%" ~[\n]* "\n" + | EscapedChar:: "\\" ~[a-zA-Z\\] + | Environment:: "\\begin{" EnvironmentName "}" Text "\\end{" EnvironmentName! "}" + | Word:: ~[\\\r\n\ %{}]++ + | LineBreak:: "\\\\" + | "$" (Math:: ~[$]+) "$" + | "$$" (Math:: ~[$]+) "$$" + | Verbatim + | Table + // | WiX + +Command:: = "\\" CommandName ws -> ~[{] + | "\\" CommandName OptArgs ws "{" Text "}" +CommandName = [A-Za-z0-9]++ &~ "begin" | "end" +OptArgs:: = ws ("[" Arg "]") +/ ws + | () + +Table = "\\begin{tabular}" + TableRow +/ (ws "\\\\" ws) + "\\end{tabular}" +TableRow = TableCol +/ (ws "&" ws) +TableCol = Text &~ ... "\\\\" ... + +EnvironmentName = [A-Za-z0-9]++ &~ "verbatim" | "tabular" + +Verbatim = "\\begin{verbatim}" + (Verb:: ... &~ ... "\\end{verbatim}") + "\\end{verbatim}" + +hws! = [ \r] +ws! = (hws* "\n")? hws* -> ~[ \n\r] +nl! = [ \r]* "\n" [ \r]* -> ~[ \n\r] +br! = [ \r]* "\n" [ \r]* "\n" [ \r\n]* -> ~[ \n\r] + +// import wix.g as wix +// WiX = "\\begin{wix}\n" +// wix.Pars +// "\n\\end{verbatim}" + + + + -- 1.7.10.4