X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=tests%2Flatex.g;fp=tests%2Flatex.g;h=73bd7d32e12e83b96c617753c460e2bd881fc693;hp=0000000000000000000000000000000000000000;hb=9e1149086929874c9e7bd09daaef22f55432f750;hpb=d474c27d3c37b00d2b2ec2dc62d123d69c8edac9 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}" + + + +