├── .gitignore ├── LICENSE.md ├── README.md ├── maven.md └── src ├── apg ├── ABNFforSABNF.bnf ├── Ast.java ├── Generator.java ├── GeneratorAttributes.java ├── GeneratorCommandLine.java ├── GeneratorGrammar.java ├── GeneratorSyntax.java ├── Grammar.java ├── Opcode.java ├── Parser.java ├── Statistics.java ├── Trace.java ├── UdtLib.java ├── Utilities.java └── package.html └── examples ├── Main.java ├── RunTests.java ├── Utils.java ├── anbn ├── AnBn.java ├── HandwrittenAnBn.java ├── RunAnBn.java ├── UAnBn.java ├── anbn.bnf ├── input.txt ├── package.html └── uanbn.bnf ├── anbncn ├── AnBnCn.java ├── HandwrittenAnBnCn.java ├── RunAnBnCn.java ├── UAnBnCn.java ├── anbncn.bnf ├── package.html └── uanbncn.bnf ├── demo ├── DisplayAst.java ├── DisplayTrace.java ├── Expressions.java ├── Hostname.java ├── IPv4.java ├── TranslateAst.java ├── UExpressions.java ├── UHostname.java ├── UIPv4.java ├── UdtAsAlt.java ├── UdtToAst.java ├── expressions.bnf ├── hostname.bnf ├── ipv4.bnf ├── package.html ├── uexpressions.bnf ├── uhostname.bnf └── uipv4.bnf ├── expressions ├── Expressions.java ├── RunExpressions.java ├── UExpressions.java ├── expressions.bnf ├── package.html └── uexpressions.bnf ├── inifile ├── IniFile.input ├── IniFile.java ├── RunIniFile.java ├── UIniFile.java ├── inifile.bnf ├── package.html └── uinifile.bnf ├── mailbox ├── Atom.java ├── DContent.java ├── Ldh_str.java ├── Mailbox.java ├── RunMailbox.java ├── ULet_dig.java ├── UMailbox.java ├── mailbox.bnf ├── package.html └── umailbox.bnf ├── package.html └── testudtlib ├── Alphanum.java ├── AnyString.java ├── Comment.java ├── DecNum.java ├── HexNum.java ├── LineEnd.java ├── QuotedString.java ├── RunUdtTest.java ├── UEmpty.bnf ├── UEmpty.java ├── UNonEmpty.bnf ├── UNonEmpty.java ├── WhiteSpace.java ├── alphanum.bnf ├── any.bnf ├── comment.bnf ├── decnum.bnf ├── hexnum.bnf ├── lineend.bnf ├── package.html ├── quotedstring.bnf └── whitespace.bnf /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/README.md -------------------------------------------------------------------------------- /maven.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/maven.md -------------------------------------------------------------------------------- /src/apg/ABNFforSABNF.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/ABNFforSABNF.bnf -------------------------------------------------------------------------------- /src/apg/Ast.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/Ast.java -------------------------------------------------------------------------------- /src/apg/Generator.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/Generator.java -------------------------------------------------------------------------------- /src/apg/GeneratorAttributes.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/GeneratorAttributes.java -------------------------------------------------------------------------------- /src/apg/GeneratorCommandLine.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/GeneratorCommandLine.java -------------------------------------------------------------------------------- /src/apg/GeneratorGrammar.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/GeneratorGrammar.java -------------------------------------------------------------------------------- /src/apg/GeneratorSyntax.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/GeneratorSyntax.java -------------------------------------------------------------------------------- /src/apg/Grammar.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/Grammar.java -------------------------------------------------------------------------------- /src/apg/Opcode.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/Opcode.java -------------------------------------------------------------------------------- /src/apg/Parser.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/Parser.java -------------------------------------------------------------------------------- /src/apg/Statistics.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/Statistics.java -------------------------------------------------------------------------------- /src/apg/Trace.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/Trace.java -------------------------------------------------------------------------------- /src/apg/UdtLib.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/UdtLib.java -------------------------------------------------------------------------------- /src/apg/Utilities.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/Utilities.java -------------------------------------------------------------------------------- /src/apg/package.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/apg/package.html -------------------------------------------------------------------------------- /src/examples/Main.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/Main.java -------------------------------------------------------------------------------- /src/examples/RunTests.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/RunTests.java -------------------------------------------------------------------------------- /src/examples/Utils.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/Utils.java -------------------------------------------------------------------------------- /src/examples/anbn/AnBn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbn/AnBn.java -------------------------------------------------------------------------------- /src/examples/anbn/HandwrittenAnBn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbn/HandwrittenAnBn.java -------------------------------------------------------------------------------- /src/examples/anbn/RunAnBn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbn/RunAnBn.java -------------------------------------------------------------------------------- /src/examples/anbn/UAnBn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbn/UAnBn.java -------------------------------------------------------------------------------- /src/examples/anbn/anbn.bnf: -------------------------------------------------------------------------------- 1 | AnBn = "a" [AnBn] "b" 2 | 3 | -------------------------------------------------------------------------------- /src/examples/anbn/input.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbn/input.txt -------------------------------------------------------------------------------- /src/examples/anbn/package.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbn/package.html -------------------------------------------------------------------------------- /src/examples/anbn/uanbn.bnf: -------------------------------------------------------------------------------- 1 | AnBn = u_anbn 2 | 3 | -------------------------------------------------------------------------------- /src/examples/anbncn/AnBnCn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbncn/AnBnCn.java -------------------------------------------------------------------------------- /src/examples/anbncn/HandwrittenAnBnCn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbncn/HandwrittenAnBnCn.java -------------------------------------------------------------------------------- /src/examples/anbncn/RunAnBnCn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbncn/RunAnBnCn.java -------------------------------------------------------------------------------- /src/examples/anbncn/UAnBnCn.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbncn/UAnBnCn.java -------------------------------------------------------------------------------- /src/examples/anbncn/anbncn.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbncn/anbncn.bnf -------------------------------------------------------------------------------- /src/examples/anbncn/package.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/anbncn/package.html -------------------------------------------------------------------------------- /src/examples/anbncn/uanbncn.bnf: -------------------------------------------------------------------------------- 1 | AnBnCn = u_anbncn 2 | 3 | -------------------------------------------------------------------------------- /src/examples/demo/DisplayAst.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/DisplayAst.java -------------------------------------------------------------------------------- /src/examples/demo/DisplayTrace.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/DisplayTrace.java -------------------------------------------------------------------------------- /src/examples/demo/Expressions.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/Expressions.java -------------------------------------------------------------------------------- /src/examples/demo/Hostname.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/Hostname.java -------------------------------------------------------------------------------- /src/examples/demo/IPv4.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/IPv4.java -------------------------------------------------------------------------------- /src/examples/demo/TranslateAst.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/TranslateAst.java -------------------------------------------------------------------------------- /src/examples/demo/UExpressions.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/UExpressions.java -------------------------------------------------------------------------------- /src/examples/demo/UHostname.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/UHostname.java -------------------------------------------------------------------------------- /src/examples/demo/UIPv4.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/UIPv4.java -------------------------------------------------------------------------------- /src/examples/demo/UdtAsAlt.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/UdtAsAlt.java -------------------------------------------------------------------------------- /src/examples/demo/UdtToAst.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/UdtToAst.java -------------------------------------------------------------------------------- /src/examples/demo/expressions.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/expressions.bnf -------------------------------------------------------------------------------- /src/examples/demo/hostname.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/hostname.bnf -------------------------------------------------------------------------------- /src/examples/demo/ipv4.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/ipv4.bnf -------------------------------------------------------------------------------- /src/examples/demo/package.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/package.html -------------------------------------------------------------------------------- /src/examples/demo/uexpressions.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/uexpressions.bnf -------------------------------------------------------------------------------- /src/examples/demo/uhostname.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/uhostname.bnf -------------------------------------------------------------------------------- /src/examples/demo/uipv4.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/demo/uipv4.bnf -------------------------------------------------------------------------------- /src/examples/expressions/Expressions.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/expressions/Expressions.java -------------------------------------------------------------------------------- /src/examples/expressions/RunExpressions.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/expressions/RunExpressions.java -------------------------------------------------------------------------------- /src/examples/expressions/UExpressions.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/expressions/UExpressions.java -------------------------------------------------------------------------------- /src/examples/expressions/expressions.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/expressions/expressions.bnf -------------------------------------------------------------------------------- /src/examples/expressions/package.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/expressions/package.html -------------------------------------------------------------------------------- /src/examples/expressions/uexpressions.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/expressions/uexpressions.bnf -------------------------------------------------------------------------------- /src/examples/inifile/IniFile.input: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/inifile/IniFile.input -------------------------------------------------------------------------------- /src/examples/inifile/IniFile.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/inifile/IniFile.java -------------------------------------------------------------------------------- /src/examples/inifile/RunIniFile.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/inifile/RunIniFile.java -------------------------------------------------------------------------------- /src/examples/inifile/UIniFile.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/inifile/UIniFile.java -------------------------------------------------------------------------------- /src/examples/inifile/inifile.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/inifile/inifile.bnf -------------------------------------------------------------------------------- /src/examples/inifile/package.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/inifile/package.html -------------------------------------------------------------------------------- /src/examples/inifile/uinifile.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/inifile/uinifile.bnf -------------------------------------------------------------------------------- /src/examples/mailbox/Atom.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/Atom.java -------------------------------------------------------------------------------- /src/examples/mailbox/DContent.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/DContent.java -------------------------------------------------------------------------------- /src/examples/mailbox/Ldh_str.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/Ldh_str.java -------------------------------------------------------------------------------- /src/examples/mailbox/Mailbox.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/Mailbox.java -------------------------------------------------------------------------------- /src/examples/mailbox/RunMailbox.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/RunMailbox.java -------------------------------------------------------------------------------- /src/examples/mailbox/ULet_dig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/ULet_dig.java -------------------------------------------------------------------------------- /src/examples/mailbox/UMailbox.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/UMailbox.java -------------------------------------------------------------------------------- /src/examples/mailbox/mailbox.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/mailbox.bnf -------------------------------------------------------------------------------- /src/examples/mailbox/package.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/package.html -------------------------------------------------------------------------------- /src/examples/mailbox/umailbox.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/mailbox/umailbox.bnf -------------------------------------------------------------------------------- /src/examples/package.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/package.html -------------------------------------------------------------------------------- /src/examples/testudtlib/Alphanum.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/Alphanum.java -------------------------------------------------------------------------------- /src/examples/testudtlib/AnyString.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/AnyString.java -------------------------------------------------------------------------------- /src/examples/testudtlib/Comment.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/Comment.java -------------------------------------------------------------------------------- /src/examples/testudtlib/DecNum.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/DecNum.java -------------------------------------------------------------------------------- /src/examples/testudtlib/HexNum.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/HexNum.java -------------------------------------------------------------------------------- /src/examples/testudtlib/LineEnd.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/LineEnd.java -------------------------------------------------------------------------------- /src/examples/testudtlib/QuotedString.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/QuotedString.java -------------------------------------------------------------------------------- /src/examples/testudtlib/RunUdtTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/RunUdtTest.java -------------------------------------------------------------------------------- /src/examples/testudtlib/UEmpty.bnf: -------------------------------------------------------------------------------- 1 | udt = e_udt -------------------------------------------------------------------------------- /src/examples/testudtlib/UEmpty.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/UEmpty.java -------------------------------------------------------------------------------- /src/examples/testudtlib/UNonEmpty.bnf: -------------------------------------------------------------------------------- 1 | udt = u_udt -------------------------------------------------------------------------------- /src/examples/testudtlib/UNonEmpty.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/UNonEmpty.java -------------------------------------------------------------------------------- /src/examples/testudtlib/WhiteSpace.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/WhiteSpace.java -------------------------------------------------------------------------------- /src/examples/testudtlib/alphanum.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/alphanum.bnf -------------------------------------------------------------------------------- /src/examples/testudtlib/any.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/any.bnf -------------------------------------------------------------------------------- /src/examples/testudtlib/comment.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/comment.bnf -------------------------------------------------------------------------------- /src/examples/testudtlib/decnum.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/decnum.bnf -------------------------------------------------------------------------------- /src/examples/testudtlib/hexnum.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/hexnum.bnf -------------------------------------------------------------------------------- /src/examples/testudtlib/lineend.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/lineend.bnf -------------------------------------------------------------------------------- /src/examples/testudtlib/package.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/package.html -------------------------------------------------------------------------------- /src/examples/testudtlib/quotedstring.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/quotedstring.bnf -------------------------------------------------------------------------------- /src/examples/testudtlib/whitespace.bnf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ldthomas/apg-java/HEAD/src/examples/testudtlib/whitespace.bnf --------------------------------------------------------------------------------