"" "!" "" "636" "\n" "!" "" "629" " // standard functions\n" "!" "" "1000300" " // class Lexicon\n\n" "main" " " "{" "\n " "psvm" " " "{" "\n " "String" " " "src" " " "=" " " "takeInput" "" "(" "" "args" "" "," " " "null" "" ")" "" ";" "\n " "Java20" " " "lex" " " "=" " " "new" " " "Java20" "" "(" "" ")" "" ";" "\n " "src" " " "=" " " "src" "" "." "" "replace" "" "(" "" "\"\\r\\n\"" "" "," " " "\"\\n\"" "" ")" "" ";" "\n " "LineNumberReader" " " "source" " " "=" " " "new" " " "LineNumberReader" "" "(" "" "new" " " "StringReader" "" "(" "" "src" "" ")" "" ")" "" ";" "\n " "int" " " "lineNr" " " "=" " " "source" "" "." "" "getLineNumber" "" "(" "" ")" "" "+" "" "1" "" ";" "\n " "List" "" "<" "" "T" "" ">" " " "list" " " "=" " " "new" " " "ArrayList" "" "<" "" "T" "" ">" "" "(" "" ")" "" ";" "\n " "for" " " "(" "" "Object" " " "a" "" ";" " " "(" "" "a" " " "=" " " "lex" "" "." "" "grab" "" "(" "" "source" "" ")" "" ")" " " "!" "" "=" " " "lex" "" "." "" "$" "" ";" "" ")" " " "{" "\n " "String" " " "word" " " "=" " " "lex" "" "." "" "word" "" "(" "" ")" "" ";" "\n " "String" " " "q" " " "=" " " "quote" "" "(" "" "word" "" ")" "" ";" "\n //System.out.println(\"grabbed at line \" + lineNr + \": \" + a + \" \" + q);\n " "lineNr" " " "=" " " "source" "" "." "" "getLineNumber" "" "(" "" ")" "" "+" "" "1" "" ";" "\n \n " "T" " " "t" " " "=" " " "new" " " "T" "" "(" "" "a" "" "," " " "word" "" ")" "" ";" "\n " "boolean" " " "isSpace" " " "=" " " "t" "" "." "" "isSpace" "" "(" "" ")" "" ";" "\n " "if" " " "(" "" "isSpace" " " "&" "" "&" " " "list" "" "." "" "size" "" "(" "" ")" " " ">" " " "0" " " "&" "" "&" " " "list" "" "." "" "get" "" "(" "" "list" "" "." "" "size" "" "(" "" ")" "" "-" "" "1" "" ")" "" "." "" "isSpace" "" "(" "" ")" "" ")" "\n " "list" "" "." "" "get" "" "(" "" "list" "" "." "" "size" "" "(" "" ")" "" "-" "" "1" "" ")" "" "." "" "word" " " "+" "" "=" " " "word" "" ";" " // merge spaces\n " "else" "\n " "list" "" "." "" "add" "" "(" "" "t" "" ")" "" ";" "\n " "}" "\n \n " "List" "" "<" "" "String" "" ">" " " "cnc" " " "=" " " "new" " " "ArrayList" "" "<" "" "String" "" ">" "" "(" "" ")" "" ";" "\n " "for" " " "(" "" "int" " " "i" " " "=" " " "0" "" ";" " " "i" " " "<" " " "list" "" "." "" "size" "" "(" "" ")" "" ";" " " ")" " " "{" "\n " "T" " " "t" " " "=" " " "list" "" "." "" "get" "" "(" "" "i" "" ")" "" ";" "\n " "boolean" " " "shouldBeSpace" " " "=" " " "(" "" "cnc" "" "." "" "size" "" "(" "" ")" " " "%" " " "2" "" ")" " " "=" "" "=" " " "0" "" ";" "\n " "boolean" " " "isSpace" " " "=" " " "t" "" "." "" "isSpace" "" "(" "" ")" "" ";" "\n " "if" " " "(" "" "shouldBeSpace" " " "=" "" "=" " " "isSpace" "" ")" " " "{" "\n " "cnc" "" "." "" "add" "" "(" "" "t" "" "." "" "word" "" ")" "" ";" "\n " "+" "" "+" "" "i" "" ";" "\n " "}" " " "else" " " "if" " " "(" "" "shouldBeSpace" "" ")" "\n " "cnc" "" "." "" "add" "" "(" "" "\"\"" "" ")" "" ";" "\n " "else" " " "{" "\n " "System" "" "." "" "out" "" "." "" "println" "" "(" "" "cncToLines" "" "(" "" "cnc" "" ")" "" ")" "" ";" "\n " "throw" " " "new" " " "RuntimeException" "" "(" "" "\"TILT at \"" " " "+" " " "cnc" "" "." "" "size" "" "(" "" ")" " " "+" " " "\": \"" " " "+" " " "quote" "" "(" "" "t" "" "." "" "word" "" ")" "" ")" "" ";" "\n " "}" "\n " "}" "\n " "if" " " "(" "" "(" "" "cnc" "" "." "" "size" "" "(" "" ")" " " "%" " " "2" "" ")" " " "=" "" "=" " " "0" "" ")" "\n " "cnc" "" "." "" "add" "" "(" "" "\"\"" "" ")" "" ";" "\n\n " "saveTextFile" "" "(" "" "\"output/output.txt\"" "" "," " " "cncToLines" "" "(" "" "cnc" "" ")" "" ")" "" ";" "\n " "}" "\n \n " "static" " " "class" " " "T" " " "{" "\n " "Object" " " "a" "" ";" " " "String" " " "word" "" ";" "\n \n " "T" "" "(" "" "Object" " " "a" "" "," " " "String" " " "word" "" ")" " " "{" " " "this" "" "." "" "a" " " "=" " " "a" "" ";" " " "this" "" "." "" "word" " " "=" " " "word" "" ";" " " "}" "\n \n " "boolean" " " "isSpace" "" "(" "" ")" " " "{" "\n " "return" " " "a" "" "." "" "equals" "" "(" "" "\"WHITE_SPACE\"" "" ")" " " "|" "" "|" " " "a" "" "." "" "equals" "" "(" "" "\"COMMENT\"" "" ")" "" ";" "\n " "}" "\n " "}" "\n \n " "static" " " "String" " " "cncToLines" "" "(" "" "List" "" "<" "" "String" "" ">" " " "cnc" "" ")" " " "{" "\n " "StringBuilder" " " "out" " " "=" " " "new" " " "StringBuilder" "" "(" "" ")" "" ";" "\n " "for" " " "(" "" "String" " " "token" " " ":" " " "cnc" "" ")" "\n " "out" "" "." "" "append" "" "(" "" "quote" "" "(" "" "token" "" ")" " " "+" " " "\"\\n\"" "" ")" "" ";" "\n " "return" " " "out" "" "." "" "toString" "" "(" "" ")" "" ";" "\n " "}" "\n \n " "static" " " "String" " " "takeInput" "" "(" "" "String" "" "[" "" "]" " " "args" "" "," " " "String" " " "def" "" ")" " " "tex" " " "{" "\n " "if" " " "(" "" "args" "" "." "" "length" " " "!" "" "=" " " "0" "" ")" " " "return" " " "loadSnippet" "" "(" "" "args" "" "[" "" "0" "" "]" "" ")" "" ";" "\n " "return" " " "loadTextFile" "" "(" "" "\"input/input.txt\"" "" "," " " "def" "" ")" "" ";" "\n " "}" "\n \n " "public" " " "static" " " "String" " " "quote" "" "(" "" "String" " " "s" "" ")" " " "{" "\n " "if" " " "(" "" "s" " " "=" "" "=" " " "null" "" ")" " " "return" " " "\"null\"" "" ";" "\n " "return" " " "\"\\\"\"" " " "+" " " "s" "" "." "" "replace" "" "(" "" "\"\\\\\"" "" "," " " "\"\\\\\\\\\"" "" ")" "" "." "" "replace" "" "(" "" "\"\\\"\"" "" "," " " "\"\\\\\\\"\"" "" ")" "" "." "" "replace" "" "(" "" "\"\\r\"" "" "," " " "\"\\\\r\"" "" ")" "" "." "" "replace" "" "(" "" "\"\\n\"" "" "," " " "\"\\\\n\"" "" ")" " " "+" " " "\"\\\"\"" "" ";" "\n " "}" "\n \n " "static" " " "class" " " "Java20" " " "extends" " " "Lexicon" " " "{" "\n\n " "Java20" "" "(" "" ")" " " "{" "\n\n /**\n * Grammar for Java 2.0.\n *\n * Nonterminal - first letter uppercase\n * TERMINAL - all letters uppercase\n * keyword - all letters lowercase\n */\n " "int" " " "INFINITY" " " "=" " " "-" "" "1" "" ";" "\n\n /**\n * 19.3 Terminals from section 3.6: White Space: [[:space:]]\n */\n " "put" "" "(" "" "\"WHITE_SPACE\"" "" "," " " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "space" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "" ")" "" ";" "\n\n /**\n * 19.3 Terminals from section 3.7: Comment\n */\n " "put" "" "(" "" "\"COMMENT\"" "" "," " " "new" " " "Union" "" "(" "\n\n //\n // Traditional Comment: /\\*[^*]+(\\*([^*/][^*]*)?)*\\*/\n //\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"/*\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "NonMatch" "" "(" "" "\"*\"" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"*\"" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "Concatenation" "" "(" "\n " "new" " " "NonMatch" "" "(" "" "\"*/\"" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "NonMatch" "" "(" "" "\"*\"" "" ")" "" "," " " "0" "" "," " " "INFINITY" "" ")" "\n " ")" "" "," " " "0" "" "," " " "1" "" ")" "\n " ")" "" "," " " "0" "" "," " " "INFINITY" "\n " ")" "" "," "\n " "new" " " "Singleton" "" "(" "" "\"*/\"" "" ")" "\n " ")" "" ")" "" ")" "" "," " " "new" " " "Union" "" "(" "\n\n /**\n * End Of Line Comment: //[^\\n]*\\n\n */\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"//\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "NonMatch" "" "(" "" "\"\\n\"" "" ")" "" "," " " "0" "" "," " " "INFINITY" "" ")" "" "," "\n " "new" " " "Singleton" "" "(" "" "\"\\n\"" "" ")" "\n " ")" "" ")" "" "," "\n\n //\n // Documentation Comment: /\\*\\*(([^*/][^*]*)?\\*)*/\n //\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"/**\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Concatenation" "" "(" "\n " "new" " " "NonMatch" "" "(" "" "\"*/\"" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "NonMatch" "" "(" "" "\"*\"" "" ")" "" "," " " "0" "" "," " " "INFINITY" "" ")" "\n " ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," "\n " "new" " " "Singleton" "" "(" "" "\"*\"" "" ")" "\n " ")" "" "," " " "0" "" "," " " "INFINITY" "\n " ")" "" "," "\n " "new" " " "Singleton" "" "(" "" "\"/\"" "" ")" "\n " ")" "" ")" "\n " ")" "" ")" "" ")" "" ";" "\n\n " "put" "" "(" "" "\"IDENTIFIER\"" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Union" "" "(" "\n " "PosixClass" "" "." "" "alpha" "" "(" "" ")" "" "," "\n " "new" " " "Match" "" "(" "" "\"_$\"" "" ")" "\n " ")" "" "," "\n " "new" " " "Repetition" "" "(" "\n " "new" " " "Union" "" "(" "\n " "PosixClass" "" "." "" "alnum" "" "(" "" ")" "" "," "\n " "new" " " "Match" "" "(" "" "\"_$\"" "" ")" "\n " ")" "" "," " " "0" "" "," " " "INFINITY" "\n " ")" "\n " ")" "" ")" "" ";" "\n\n /**\n * 19.3 Terminals from section 3.9: Keyword (recognized but not in the Java grammar)\n */\n " "put" "" "(" "" "\"KEYWORD\"" "" "," " " "new" " " "Union" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"const\"" "" ")" "" "," "\n " "new" " " "Singleton" "" "(" "" "\"goto\"" "" ")" "\n " ")" "" ")" "" ";" "\n\n /**\n * 19.3 Terminals from section 3.10.1: Integer Literal\n */\n " "put" "" "(" "" "\"INTEGER_LITERAL\"" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Union" "" "(" "\n /**\n * Decimal Integer Literal: 0|[1-9][[:digit:]]*\n */\n " "new" " " "Singleton" "" "(" "" "\"0\"" "" ")" "" "," " " "new" " " "Union" "" "(" "\n\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Range" "" "(" "" "'1'" "" "," " " "'9'" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "0" "" "," " " "INFINITY" "" ")" "\n " ")" "" "," " " "new" " " "Union" "" "(" "\n\n /**\n * Hexadecimal Integer Literal: 0[xX][[:xdigit:]]+\n */\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"0\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Match" "" "(" "" "\"xX\"" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "xdigit" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "\n " ")" "" ")" "" "," "\n\n /**\n * Octal Integer Literal: 0[0-7]+\n */\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"0\"" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "Range" "" "(" "" "'0'" "" "," " " "'7'" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "\n " ")" "\n " ")" "" ")" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "Match" "" "(" "" "\"lL\"" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "\n " ")" "" ")" "" ";" "\n\n /**\n * 19.3 Terminals from section 3.10.2: Floating-Point Literal\n */\n " "put" "" "(" "" "\"FLOATING_POINT_LITERAL\"" "" "," " " "new" " " "Union" "" "(" "\n\n /**\n * [[:digit:]]+\\.[[:digit:]]*([eE][-+]?[[:digit:]]+)?[fFdD]?\n */\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\".\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "0" "" "," " " "INFINITY" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Concatenation" "" "(" "\n " "new" " " "Match" "" "(" "" "\"eE\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Match" "" "(" "" "\"-+\"" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "\n " ")" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "Match" "" "(" "" "\"fFdD\"" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "\n " ")" "" ")" "" ")" "" ")" "" "," " " "new" " " "Union" "" "(" "\n\n /**\n * \\.[[:digit:]]+([eE][-+]?[[:digit:]]+)?[fFdD]?\n */\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\".\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Concatenation" "" "(" "\n " "new" " " "Match" "" "(" "" "\"eE\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Match" "" "(" "" "\"-+\"" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "\n " ")" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "Match" "" "(" "" "\"fFdD\"" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "\n " ")" "" ")" "" ")" "" "," " " "new" " " "Union" "" "(" "\n\n /**\n * [[:digit:]]+[eE][-+]?[[:digit:]]+[fFdD]?\n */\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Match" "" "(" "" "\"eE\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Match" "" "(" "" "\"-+\"" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "Match" "" "(" "" "\"fFdD\"" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "\n " ")" "" ")" "" ")" "" ")" "" "," "\n\n /**\n * [[:digit:]]+([eE][-+]?[[:digit:]]+)?[fFdD]\n */\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Concatenation" "" "(" "\n " "new" " " "Match" "" "(" "" "\"eE\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Match" "" "(" "" "\"-+\"" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "PosixClass" "" "." "" "digit" "" "(" "" ")" "" "," " " "1" "" "," " " "INFINITY" "" ")" "\n " ")" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," "\n " "new" " " "Match" "" "(" "" "\"fFdD\"" "" ")" "\n " ")" "" ")" "\n " ")" "" ")" "" ")" "" ")" "" ";" "\n\n /**\n * 19.3 Terminals from section 3.10.3: Boolean Literal\n */\n " "put" "" "(" "" "\"BOOLEAN_LITERAL\"" "" "," " " "new" " " "Union" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"true\"" "" ")" "" "," "\n " "new" " " "Singleton" "" "(" "" "\"false\"" "" ")" "\n " ")" "" ")" "" ";" "\n\n /**\n * 19.3 Terminals from section 3.10.4: Character Literal\n */\n " "put" "" "(" "" "\"CHARACTER_LITERAL\"" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"'\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Union" "" "(" "\n\n /**\n * Single Character: [^\\r\\n'\\\\]\n */\n " "new" " " "NonMatch" "" "(" "" "\"\\r\\n'\\\\\"" "" ")" "" "," "\n\n /**\n * Escape Sequence: \\\\([btnfr\\\"'\\\\]|[0-3]?[0-7]{1,2})\n */\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"\\\\\"" "" ")" "" "," "\n " "new" " " "Union" "" "(" "\n " "new" " " "Match" "" "(" "" "\"btnfr\\\"'\\\\\"" "" ")" "" "," "\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Range" "" "(" "" "'0'" "" "," " " "'3'" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "Range" "" "(" "" "'0'" "" "," " " "'7'" "" ")" "" "," " " "1" "" "," " " "2" "" ")" "\n " ")" "\n " ")" "\n " ")" "\n " ")" "" "," "\n " "new" " " "Singleton" "" "(" "" "\"'\"" "" ")" "\n " ")" "" ")" "" ")" "" ";" "\n\n /**\n * 19.3 Terminals from section 3.10.5: String Literal\n */\n " "put" "" "(" "" "\"STRING_LITERAL\"" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"\\\"\"" "" ")" "" "," " " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "\n " "new" " " "Union" "" "(" "\n\n /**\n * Single Character: [^\\r\\n\"\\\\]\n */\n " "new" " " "NonMatch" "" "(" "" "\"\\r\\n\\\"\\\\\"" "" ")" "" "," "\n\n /**\n * Escape Sequence: \\\\([btnfr\\\"'\\\\]|[0-3]?[0-7]{1,2})\n */\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Singleton" "" "(" "" "\"\\\\\"" "" ")" "" "," "\n " "new" " " "Union" "" "(" "\n " "new" " " "Match" "" "(" "" "\"btnfr\\\"'\\\\\"" "" ")" "" "," "\n " "new" " " "Concatenation" "" "(" "\n " "new" " " "Repetition" "" "(" "" "new" " " "Range" "" "(" "" "'0'" "" "," " " "'3'" "" ")" "" "," " " "0" "" "," " " "1" "" ")" "" "," "\n " "new" " " "Repetition" "" "(" "" "new" " " "Range" "" "(" "" "'0'" "" "," " " "'7'" "" ")" "" "," " " "1" "" "," " " "2" "" ")" "\n " ")" "\n " ")" "\n " ")" "\n " ")" "" "," " " "0" "" "," " " "INFINITY" "\n " ")" "" "," "\n " "new" " " "Singleton" "" "(" "" "\"\\\"\"" "" ")" "\n " ")" "" ")" "" ")" "" ";" "\n\n /**\n * 19.3 Terminals section 3.10.7: Null Literal\n */\n " "put" "" "(" "" "\"NULL_LITERAL\"" "" "," " " "new" " " "Singleton" "" "(" "" "\"null\"" "" ")" "" ")" "" ";" "\n \n // OK, it seems we have to add some more stuff...\n \n //put(\"OTHER1\", new Match(\";{}=,<>[]().+-:|&!\"));\n //put(\"OTHER1\", new NonMatch(\"\")); // catch anything, one character at a time\n " "put" "" "(" "" "\"OTHER1\"" "" "," " " "new" " " "NonMatch" "" "(" "" "\" \\t\\r\\n\"" "" ")" "" ")" "" ";" " // catch any non-whitespace, one character at a time\n\n " "}" "\n" "}" " // class Java20\n" "}" ""