language JavaLex { terminal { WhiteSpace = { [ \t\n\r]+ } MultiLineComment = { "/*" .. "*/" } EndOfLineComment = { "//" .. \n } Omit = { ( | | )* } Digit = { [\u0030-\u0039] | [\u0660-\u0669] | [\u06f0-\u06f9] | [\u0966-\u096f] | [\u09e6-\u09ef] | [\u0a66-\u0a6f] | [\u0ae6-\u0aef] | [\u0b66-\u0b6f] | [\u0be7-\u0bef] | [\u0c66-\u0c6f] | [\u0ce6-\u0cef] | [\u0d66-\u0d6f] | [\u0E50-\u0e59] | [\u0ed0-\u0ed9] | [\u1040-\u1049]} Letter = { [\u0024] | [\u0041-\u005a] | [\u005f] | [\u0061-\u007a] | [\u00c0-\u00d6] | [\u00d8-\u00f6] | [\u00f8-\u00ff] | [\u0100-\u1fff] | [\u3040-\u318f] | [\u3300-\u337f] | [\u3400-\u3d2d] | [\u4e00-\u9fff] | [\uf900-\ufaff] } Identifier = { (|)* } Exponent = { [eE][+\-]?[0-9]+ } FLit1 = { [0-9]+\.[0-9]*? [fFdD]?} FLit2 = { \.[0-9]+? [fFdD]?} FLit3 = { [0-9]+ [fFdD]?} FLit4 = { [0-9]+? [fFdD]} DecimalLiteral = { 0|[1-9][0-9]*[l|L]?} HexLiteral = {0[xX][0-9a-fA-F]+[l|L]?} OctalLiteral = {0[0-7]*[l|L]?} FloatingPointLiteral = { (|||)} Unicode = { \\ u [0-9a-fA-F] {4} } CharChar ={ [^\'\\\n\r] | ( \\ ([ntbrf\\\'\"] | [0-7] ([0-7])? | [0-3] [0-7] [0-7] ) ) | } StringChar ={ [^\"\\\n\r] | ( \\ ([ntbrf\\\'\"] | [0-7] ([0-7])? | [0-3] [0-7] [0-7] ) ) | } CharacterLiteral = { \' \' } StringLiteral = { \" * \" } KeyWord = {(if|else|while)} Stop = {(STOP)} } }