X-Git-Url: http://nitlanguage.org diff --git a/src/parser/lexer.nit b/src/parser/lexer.nit index 5556ca7..93a8371 100644 --- a/src/parser/lexer.nit +++ b/src/parser/lexer.nit @@ -23,7 +23,7 @@ redef class TEol return 0 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -38,7 +38,7 @@ redef class TComment return 1 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -53,7 +53,7 @@ redef class TKwpackage return 2 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "package" _filename = fname @@ -68,7 +68,7 @@ redef class TKwimport return 3 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "import" _filename = fname @@ -83,7 +83,7 @@ redef class TKwclass return 4 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "class" _filename = fname @@ -98,7 +98,7 @@ redef class TKwabstract return 5 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "abstract" _filename = fname @@ -113,7 +113,7 @@ redef class TKwinterface return 6 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "interface" _filename = fname @@ -128,7 +128,7 @@ redef class TKwuniversal return 7 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "universal" _filename = fname @@ -143,7 +143,7 @@ redef class TKwspecial return 8 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "special" _filename = fname @@ -158,7 +158,7 @@ redef class TKwend return 9 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "end" _filename = fname @@ -173,9 +173,9 @@ redef class TKwmeth return 10 end - init(fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do - _text = once "meth" + _text = text _filename = fname _line = line _pos = pos @@ -188,7 +188,7 @@ redef class TKwtype return 11 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "type" _filename = fname @@ -203,7 +203,7 @@ redef class TKwattr return 12 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "attr" _filename = fname @@ -218,7 +218,7 @@ redef class TKwinit return 13 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "init" _filename = fname @@ -233,7 +233,7 @@ redef class TKwredef return 14 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "redef" _filename = fname @@ -248,7 +248,7 @@ redef class TKwis return 15 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "is" _filename = fname @@ -263,7 +263,7 @@ redef class TKwdo return 16 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "do" _filename = fname @@ -278,7 +278,7 @@ redef class TKwreadable return 17 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "readable" _filename = fname @@ -293,7 +293,7 @@ redef class TKwwritable return 18 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "writable" _filename = fname @@ -308,7 +308,7 @@ redef class TKwvar return 19 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "var" _filename = fname @@ -323,7 +323,7 @@ redef class TKwintern return 20 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "intern" _filename = fname @@ -338,7 +338,7 @@ redef class TKwextern return 21 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "extern" _filename = fname @@ -353,7 +353,7 @@ redef class TKwprotected return 22 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "protected" _filename = fname @@ -368,7 +368,7 @@ redef class TKwprivate return 23 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "private" _filename = fname @@ -383,7 +383,7 @@ redef class TKwintrude return 24 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "intrude" _filename = fname @@ -398,7 +398,7 @@ redef class TKwif return 25 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "if" _filename = fname @@ -413,7 +413,7 @@ redef class TKwthen return 26 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "then" _filename = fname @@ -428,7 +428,7 @@ redef class TKwelse return 27 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "else" _filename = fname @@ -443,7 +443,7 @@ redef class TKwwhile return 28 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "while" _filename = fname @@ -458,7 +458,7 @@ redef class TKwfor return 29 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "for" _filename = fname @@ -473,7 +473,7 @@ redef class TKwin return 30 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "in" _filename = fname @@ -488,7 +488,7 @@ redef class TKwand return 31 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "and" _filename = fname @@ -503,7 +503,7 @@ redef class TKwor return 32 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "or" _filename = fname @@ -518,7 +518,7 @@ redef class TKwnot return 33 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "not" _filename = fname @@ -533,7 +533,7 @@ redef class TKwreturn return 34 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "return" _filename = fname @@ -548,7 +548,7 @@ redef class TKwcontinue return 35 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "continue" _filename = fname @@ -563,7 +563,7 @@ redef class TKwbreak return 36 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "break" _filename = fname @@ -578,7 +578,7 @@ redef class TKwabort return 37 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "abort" _filename = fname @@ -593,7 +593,7 @@ redef class TKwassert return 38 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "assert" _filename = fname @@ -608,7 +608,7 @@ redef class TKwnew return 39 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "new" _filename = fname @@ -623,7 +623,7 @@ redef class TKwisa return 40 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "isa" _filename = fname @@ -638,7 +638,7 @@ redef class TKwonce return 41 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "once" _filename = fname @@ -653,7 +653,7 @@ redef class TKwsuper return 42 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "super" _filename = fname @@ -668,7 +668,7 @@ redef class TKwself return 43 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "self" _filename = fname @@ -683,7 +683,7 @@ redef class TKwtrue return 44 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "true" _filename = fname @@ -698,7 +698,7 @@ redef class TKwfalse return 45 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "false" _filename = fname @@ -713,7 +713,7 @@ redef class TKwnull return 46 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "null" _filename = fname @@ -728,7 +728,7 @@ redef class TKwas return 47 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "as" _filename = fname @@ -737,13 +737,58 @@ redef class TKwas end end -redef class TOpar +redef class TKwwith redef meth parser_index: Int do return 48 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) + do + _text = once "with" + _filename = fname + _line = line + _pos = pos + end +end + +redef class TKwnullable + redef meth parser_index: Int + do + return 49 + end + + init init_tk(fname: String, line: Int, pos: Int) + do + _text = once "nullable" + _filename = fname + _line = line + _pos = pos + end +end + +redef class TKwisset + redef meth parser_index: Int + do + return 50 + end + + init init_tk(fname: String, line: Int, pos: Int) + do + _text = once "isset" + _filename = fname + _line = line + _pos = pos + end +end + +redef class TOpar + redef meth parser_index: Int + do + return 51 + end + + init init_tk(fname: String, line: Int, pos: Int) do _text = once "(" _filename = fname @@ -755,10 +800,10 @@ end redef class TCpar redef meth parser_index: Int do - return 49 + return 52 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once ")" _filename = fname @@ -770,10 +815,10 @@ end redef class TObra redef meth parser_index: Int do - return 50 + return 53 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "[" _filename = fname @@ -785,10 +830,10 @@ end redef class TCbra redef meth parser_index: Int do - return 51 + return 54 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "]" _filename = fname @@ -800,10 +845,10 @@ end redef class TComma redef meth parser_index: Int do - return 52 + return 55 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "," _filename = fname @@ -815,10 +860,10 @@ end redef class TColumn redef meth parser_index: Int do - return 53 + return 56 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once ":" _filename = fname @@ -830,10 +875,10 @@ end redef class TQuad redef meth parser_index: Int do - return 54 + return 57 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "::" _filename = fname @@ -845,10 +890,10 @@ end redef class TAssign redef meth parser_index: Int do - return 55 + return 58 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "=" _filename = fname @@ -860,10 +905,10 @@ end redef class TPluseq redef meth parser_index: Int do - return 56 + return 59 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "+=" _filename = fname @@ -875,10 +920,10 @@ end redef class TMinuseq redef meth parser_index: Int do - return 57 + return 60 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "-=" _filename = fname @@ -890,10 +935,10 @@ end redef class TDotdotdot redef meth parser_index: Int do - return 58 + return 61 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "..." _filename = fname @@ -905,10 +950,10 @@ end redef class TDotdot redef meth parser_index: Int do - return 59 + return 62 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once ".." _filename = fname @@ -920,10 +965,10 @@ end redef class TDot redef meth parser_index: Int do - return 60 + return 63 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "." _filename = fname @@ -935,10 +980,10 @@ end redef class TPlus redef meth parser_index: Int do - return 61 + return 64 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "+" _filename = fname @@ -950,10 +995,10 @@ end redef class TMinus redef meth parser_index: Int do - return 62 + return 65 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "-" _filename = fname @@ -965,10 +1010,10 @@ end redef class TStar redef meth parser_index: Int do - return 63 + return 66 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "*" _filename = fname @@ -980,10 +1025,10 @@ end redef class TSlash redef meth parser_index: Int do - return 64 + return 67 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "/" _filename = fname @@ -995,10 +1040,10 @@ end redef class TPercent redef meth parser_index: Int do - return 65 + return 68 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "%" _filename = fname @@ -1010,10 +1055,10 @@ end redef class TEq redef meth parser_index: Int do - return 66 + return 69 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "==" _filename = fname @@ -1025,10 +1070,10 @@ end redef class TNe redef meth parser_index: Int do - return 67 + return 70 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "!=" _filename = fname @@ -1040,10 +1085,10 @@ end redef class TLt redef meth parser_index: Int do - return 68 + return 71 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "<" _filename = fname @@ -1055,10 +1100,10 @@ end redef class TLe redef meth parser_index: Int do - return 69 + return 72 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "<=" _filename = fname @@ -1070,10 +1115,10 @@ end redef class TGt redef meth parser_index: Int do - return 70 + return 73 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once ">" _filename = fname @@ -1085,10 +1130,10 @@ end redef class TGe redef meth parser_index: Int do - return 71 + return 74 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once ">=" _filename = fname @@ -1100,10 +1145,10 @@ end redef class TStarship redef meth parser_index: Int do - return 72 + return 75 end - init(fname: String, line: Int, pos: Int) + init init_tk(fname: String, line: Int, pos: Int) do _text = once "<=>" _filename = fname @@ -1115,10 +1160,10 @@ end redef class TClassid redef meth parser_index: Int do - return 73 + return 76 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1130,10 +1175,10 @@ end redef class TId redef meth parser_index: Int do - return 74 + return 77 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1145,10 +1190,10 @@ end redef class TAttrid redef meth parser_index: Int do - return 75 + return 78 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1160,10 +1205,10 @@ end redef class TNumber redef meth parser_index: Int do - return 76 + return 79 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1175,10 +1220,10 @@ end redef class TFloat redef meth parser_index: Int do - return 77 + return 80 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1190,10 +1235,10 @@ end redef class TChar redef meth parser_index: Int do - return 78 + return 81 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1205,10 +1250,10 @@ end redef class TString redef meth parser_index: Int do - return 79 + return 82 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1220,10 +1265,10 @@ end redef class TStartString redef meth parser_index: Int do - return 80 + return 83 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1235,10 +1280,10 @@ end redef class TMidString redef meth parser_index: Int do - return 81 + return 84 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1250,10 +1295,10 @@ end redef class TEndString redef meth parser_index: Int do - return 82 + return 85 end - init(text: String, fname: String, line: Int, pos: Int) + init init_tk(text: String, fname: String, line: Int, pos: Int) do _text = text _filename = fname @@ -1266,7 +1311,7 @@ end redef class EOF redef meth parser_index: Int do - return 83 + return 86 end init(fname: String, line: Int, pos: Int) @@ -1293,10 +1338,10 @@ end # It is better user with the Parser class Lexer # Last peeked token - attr _token: Token + attr _token: nullable Token # Lexer current state - attr _state: Int + attr _state: Int = 0 # Name of the stream (as given to tokens) readable attr _filename: String @@ -1305,25 +1350,25 @@ class Lexer attr _stream: IStream # Pushback buffer to store unread character - attr _stream_buf: String + attr _stream_buf: Buffer # Number of character stored in the pushback buffer attr _stream_pos: Int # Current line number in the input stream - attr _line: Int + attr _line: Int = 0 # Current column in the input stream - attr _pos: Int + attr _pos: Int = 0 # Was the last character a cariage-return? - attr _cr: Bool + attr _cr: Bool = false # If the end of stream? - attr _eof: Bool + attr _eof: Bool = false # Current working text read from the input stream - attr _text: String + attr _text: Buffer # Constante state values private meth state_initial: Int do return 0 end @@ -1332,10 +1377,10 @@ class Lexer init(stream: IStream, fname: String) do _filename = fname - _text = new String + _text = new Buffer _stream = stream _stream_pos = -1 - _stream_buf = new String + _stream_buf = new Buffer build_goto_table build_accept_table end @@ -1346,7 +1391,7 @@ class Lexer while _token == null do _token = get_token end - return _token + return _token.as(not null) end # Give and consume the next token @@ -1357,11 +1402,11 @@ class Lexer result = get_token end _token = null - return result + return result.as(not null) end # Get a token, or null if it is discarded - private meth get_token: Token + private meth get_token: nullable Token do var dfa_state = 0 @@ -1450,7 +1495,7 @@ class Lexer end if accept_token == 1 then var token_text = _text.substring(0, accept_length) - var token = new TEol(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TEol.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line @@ -1458,528 +1503,526 @@ class Lexer end if accept_token == 2 then var token_text = _text.substring(0, accept_length) - var token = new TComment(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TComment.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 3 then - var token = new TKwpackage(_filename, start_line + 1, start_pos + 1) + var token = new TKwpackage.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 4 then - var token = new TKwimport(_filename, start_line + 1, start_pos + 1) + var token = new TKwimport.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 5 then - var token = new TKwclass(_filename, start_line + 1, start_pos + 1) + var token = new TKwclass.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 6 then - var token = new TKwabstract(_filename, start_line + 1, start_pos + 1) + var token = new TKwabstract.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 7 then - var token = new TKwinterface(_filename, start_line + 1, start_pos + 1) + var token = new TKwinterface.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 8 then - var token = new TKwuniversal(_filename, start_line + 1, start_pos + 1) + var token = new TKwuniversal.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 9 then - var token = new TKwspecial(_filename, start_line + 1, start_pos + 1) + var token = new TKwspecial.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 10 then - var token = new TKwend(_filename, start_line + 1, start_pos + 1) + var token = new TKwend.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 11 then - var token = new TKwmeth(_filename, start_line + 1, start_pos + 1) + var token_text = _text.substring(0, accept_length) + var token = new TKwmeth.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 12 then - var token = new TKwtype(_filename, start_line + 1, start_pos + 1) + var token = new TKwtype.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 13 then - var token = new TKwattr(_filename, start_line + 1, start_pos + 1) + var token = new TKwattr.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 14 then - var token = new TKwinit(_filename, start_line + 1, start_pos + 1) + var token = new TKwinit.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 15 then - var token = new TKwredef(_filename, start_line + 1, start_pos + 1) + var token = new TKwredef.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 16 then - var token = new TKwis(_filename, start_line + 1, start_pos + 1) + var token = new TKwis.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 17 then - var token = new TKwdo(_filename, start_line + 1, start_pos + 1) + var token = new TKwdo.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 18 then - var token = new TKwreadable(_filename, start_line + 1, start_pos + 1) + var token = new TKwreadable.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 19 then - var token = new TKwwritable(_filename, start_line + 1, start_pos + 1) + var token = new TKwwritable.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 20 then - var token = new TKwvar(_filename, start_line + 1, start_pos + 1) + var token = new TKwvar.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 21 then - var token = new TKwintern(_filename, start_line + 1, start_pos + 1) + var token = new TKwintern.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 22 then - var token = new TKwextern(_filename, start_line + 1, start_pos + 1) + var token = new TKwextern.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 23 then - var token = new TKwprotected(_filename, start_line + 1, start_pos + 1) + var token = new TKwprotected.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 24 then - var token = new TKwprivate(_filename, start_line + 1, start_pos + 1) + var token = new TKwprivate.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 25 then - var token = new TKwintrude(_filename, start_line + 1, start_pos + 1) + var token = new TKwintrude.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 26 then - var token = new TKwif(_filename, start_line + 1, start_pos + 1) + var token = new TKwif.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 27 then - var token = new TKwthen(_filename, start_line + 1, start_pos + 1) + var token = new TKwthen.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 28 then - var token = new TKwelse(_filename, start_line + 1, start_pos + 1) + var token = new TKwelse.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 29 then - var token = new TKwwhile(_filename, start_line + 1, start_pos + 1) + var token = new TKwwhile.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 30 then - var token = new TKwfor(_filename, start_line + 1, start_pos + 1) + var token = new TKwfor.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 31 then - var token = new TKwin(_filename, start_line + 1, start_pos + 1) + var token = new TKwin.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 32 then - var token = new TKwand(_filename, start_line + 1, start_pos + 1) + var token = new TKwand.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 33 then - var token = new TKwor(_filename, start_line + 1, start_pos + 1) + var token = new TKwor.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 34 then - var token = new TKwnot(_filename, start_line + 1, start_pos + 1) + var token = new TKwnot.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 35 then - var token = new TKwreturn(_filename, start_line + 1, start_pos + 1) + var token = new TKwreturn.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 36 then - var token = new TKwcontinue(_filename, start_line + 1, start_pos + 1) + var token = new TKwcontinue.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 37 then - var token = new TKwbreak(_filename, start_line + 1, start_pos + 1) + var token = new TKwbreak.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 38 then - var token = new TKwabort(_filename, start_line + 1, start_pos + 1) + var token = new TKwabort.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 39 then - var token = new TKwassert(_filename, start_line + 1, start_pos + 1) + var token = new TKwassert.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 40 then - var token = new TKwnew(_filename, start_line + 1, start_pos + 1) + var token = new TKwnew.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 41 then - var token = new TKwisa(_filename, start_line + 1, start_pos + 1) + var token = new TKwisa.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 42 then - var token = new TKwonce(_filename, start_line + 1, start_pos + 1) + var token = new TKwonce.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 43 then - var token = new TKwsuper(_filename, start_line + 1, start_pos + 1) + var token = new TKwsuper.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 44 then - var token = new TKwself(_filename, start_line + 1, start_pos + 1) + var token = new TKwself.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 45 then - var token = new TKwtrue(_filename, start_line + 1, start_pos + 1) + var token = new TKwtrue.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 46 then - var token = new TKwfalse(_filename, start_line + 1, start_pos + 1) + var token = new TKwfalse.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 47 then - var token = new TKwnull(_filename, start_line + 1, start_pos + 1) + var token = new TKwnull.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 48 then - var token = new TKwas(_filename, start_line + 1, start_pos + 1) + var token = new TKwas.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 49 then - var token = new TOpar(_filename, start_line + 1, start_pos + 1) + var token = new TKwwith.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 50 then - var token = new TCpar(_filename, start_line + 1, start_pos + 1) + var token = new TKwnullable.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 51 then - var token = new TObra(_filename, start_line + 1, start_pos + 1) + var token = new TKwisset.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 52 then - var token = new TCbra(_filename, start_line + 1, start_pos + 1) + var token = new TOpar.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 53 then - var token = new TComma(_filename, start_line + 1, start_pos + 1) + var token = new TCpar.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 54 then - var token = new TColumn(_filename, start_line + 1, start_pos + 1) + var token = new TObra.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 55 then - var token = new TQuad(_filename, start_line + 1, start_pos + 1) + var token = new TCbra.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 56 then - var token = new TAssign(_filename, start_line + 1, start_pos + 1) + var token = new TComma.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 57 then - var token = new TPluseq(_filename, start_line + 1, start_pos + 1) + var token = new TColumn.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 58 then - var token = new TMinuseq(_filename, start_line + 1, start_pos + 1) + var token = new TQuad.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 59 then - var token = new TDotdotdot(_filename, start_line + 1, start_pos + 1) + var token = new TAssign.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 60 then - var token = new TDotdot(_filename, start_line + 1, start_pos + 1) + var token = new TPluseq.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 61 then - var token = new TDot(_filename, start_line + 1, start_pos + 1) + var token = new TMinuseq.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 62 then - var token = new TPlus(_filename, start_line + 1, start_pos + 1) + var token = new TDotdotdot.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 63 then - var token = new TMinus(_filename, start_line + 1, start_pos + 1) + var token = new TDotdot.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 64 then - var token = new TStar(_filename, start_line + 1, start_pos + 1) + var token = new TDot.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 65 then - var token = new TSlash(_filename, start_line + 1, start_pos + 1) + var token = new TPlus.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 66 then - var token = new TPercent(_filename, start_line + 1, start_pos + 1) + var token = new TMinus.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 67 then - var token = new TEq(_filename, start_line + 1, start_pos + 1) + var token = new TStar.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 68 then - var token = new TNe(_filename, start_line + 1, start_pos + 1) + var token = new TSlash.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 69 then - var token = new TLt(_filename, start_line + 1, start_pos + 1) + var token = new TPercent.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 70 then - var token = new TLe(_filename, start_line + 1, start_pos + 1) + var token = new TEq.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 71 then - var token = new TGt(_filename, start_line + 1, start_pos + 1) + var token = new TNe.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 72 then - var token = new TGe(_filename, start_line + 1, start_pos + 1) + var token = new TLt.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 73 then - var token = new TStarship(_filename, start_line + 1, start_pos + 1) + var token = new TLe.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 74 then - var token_text = _text.substring(0, accept_length) - var token = new TClassid(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TGt.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 75 then - var token_text = _text.substring(0, accept_length) - var token = new TId(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TGe.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line return token end if accept_token == 76 then - var token_text = _text.substring(0, accept_length) - var token = new TAttrid(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TStarship.init_tk(_filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line @@ -1987,7 +2030,7 @@ class Lexer end if accept_token == 77 then var token_text = _text.substring(0, accept_length) - var token = new TNumber(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TClassid.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line @@ -1995,7 +2038,7 @@ class Lexer end if accept_token == 78 then var token_text = _text.substring(0, accept_length) - var token = new TFloat(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TId.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line @@ -2003,7 +2046,7 @@ class Lexer end if accept_token == 79 then var token_text = _text.substring(0, accept_length) - var token = new TChar(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TAttrid.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line @@ -2011,7 +2054,7 @@ class Lexer end if accept_token == 80 then var token_text = _text.substring(0, accept_length) - var token = new TString(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TNumber.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line @@ -2019,7 +2062,7 @@ class Lexer end if accept_token == 81 then var token_text = _text.substring(0, accept_length) - var token = new TStartString(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TFloat.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line @@ -2027,7 +2070,7 @@ class Lexer end if accept_token == 82 then var token_text = _text.substring(0, accept_length) - var token = new TMidString(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TChar.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line @@ -2035,7 +2078,31 @@ class Lexer end if accept_token == 83 then var token_text = _text.substring(0, accept_length) - var token = new TEndString(token_text, _filename, start_line + 1, start_pos + 1) + var token = new TString.init_tk(token_text, _filename, start_line + 1, start_pos + 1) + push_back(accept_length) + _pos = accept_pos + _line = accept_line + return token + end + if accept_token == 84 then + var token_text = _text.substring(0, accept_length) + var token = new TStartString.init_tk(token_text, _filename, start_line + 1, start_pos + 1) + push_back(accept_length) + _pos = accept_pos + _line = accept_line + return token + end + if accept_token == 85 then + var token_text = _text.substring(0, accept_length) + var token = new TMidString.init_tk(token_text, _filename, start_line + 1, start_pos + 1) + push_back(accept_length) + _pos = accept_pos + _line = accept_line + return token + end + if accept_token == 86 then + var token_text = _text.substring(0, accept_length) + var token = new TEndString.init_tk(token_text, _filename, start_line + 1, start_pos + 1) push_back(accept_length) _pos = accept_pos _line = accept_line @@ -2279,7 +2346,9 @@ class Lexer [97, 97, 86] , [98, 110, 74] , [111, 111, 87] , - [112, 122, 74] + [112, 116, 74] , + [117, 117, 88] , + [118, 122, 74] ] , [ [48, 95, -29] , @@ -2288,95 +2357,96 @@ class Lexer [ [48, 95, -29] , [97, 101, 74] , - [102, 102, 88] , + [102, 102, 89] , [103, 108, 74] , - [109, 109, 89] , - [110, 110, 90] , + [109, 109, 90] , + [110, 110, 91] , [111, 114, 74] , - [115, 115, 91] , + [115, 115, 92] , [116, 122, 74] ] , [ [48, 95, -29] , [97, 100, 74] , - [101, 101, 92] , + [101, 101, 93] , [102, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 93] , + [101, 101, 94] , [102, 110, 74] , - [111, 111, 94] , + [111, 111, 95] , [112, 116, 74] , - [117, 117, 95] , + [117, 117, 96] , [118, 122, 74] ] , [ [48, 95, -29] , [97, 109, 74] , - [110, 110, 96] , + [110, 110, 97] , [111, 113, 74] , - [114, 114, 97] , + [114, 114, 98] , [115, 122, 74] ] , [ [48, 95, -29] , - [97, 97, 98] , + [97, 97, 99] , [98, 113, 74] , - [114, 114, 99] , + [114, 114, 100] , [115, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 100] , + [101, 101, 101] , [102, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 101] , + [101, 101, 102] , [102, 111, 74] , - [112, 112, 102] , + [112, 112, 103] , [113, 116, 74] , - [117, 117, 103] , + [117, 117, 104] , [118, 122, 74] ] , [ [48, 95, -29] , [97, 103, 74] , - [104, 104, 104] , + [104, 104, 105] , [105, 113, 74] , - [114, 114, 105] , + [114, 114, 106] , [115, 120, 74] , - [121, 121, 106] , + [121, 121, 107] , [122, 122, 74] ] , [ [48, 109, -39] , - [110, 110, 107] , + [110, 110, 108] , [111, 122, 74] ] , [ [48, 95, -29] , - [97, 97, 108] , + [97, 97, 109] , [98, 122, 74] ] , [ [48, 103, -43] , - [104, 104, 109] , - [105, 113, 74] , - [114, 114, 110] , + [104, 104, 110] , + [105, 105, 111] , + [106, 113, 74] , + [114, 114, 112] , [115, 122, 74] ] , [ - [0, 9, 111] , - [11, 12, 111] , - [14, 33, 111] , - [34, 34, 112] , - [35, 91, 111] , - [92, 92, 113] , - [93, 122, 111] , - [123, 123, 114] , - [124, 255, 111] + [0, 9, 113] , + [11, 12, 113] , + [14, 33, 113] , + [34, 34, 114] , + [35, 91, 113] , + [92, 92, 115] , + [93, 122, 113] , + [123, 123, 116] , + [124, 255, 113] ] , nil_array , nil_array , @@ -2385,9 +2455,9 @@ class Lexer ] , nil_array , [ - [0, 9, 115] , - [11, 12, 115] , - [14, 255, 115] + [0, 9, 117] , + [11, 12, 117] , + [14, 255, 117] ] , nil_array , [ @@ -2395,7 +2465,7 @@ class Lexer ] , nil_array , [ - [10, 10, 116] + [10, 10, 118] ] , [ [0, 255, -11] @@ -2404,7 +2474,7 @@ class Lexer nil_array , nil_array , [ - [46, 46, 117] + [46, 46, 119] ] , [ [48, 57, 60] @@ -2414,7 +2484,7 @@ class Lexer ] , nil_array , [ - [62, 62, 118] + [62, 62, 120] ] , nil_array , nil_array , @@ -2431,10 +2501,10 @@ class Lexer [48, 122, -25] ] , [ - [48, 57, 119] , - [65, 90, 120] , - [95, 95, 121] , - [97, 122, 122] + [48, 57, 121] , + [65, 90, 122] , + [95, 95, 123] , + [97, 122, 124] ] , [ [48, 122, -35] @@ -2450,42 +2520,42 @@ class Lexer ] , [ [48, 110, -32] , - [111, 111, 123] , + [111, 111, 125] , [112, 114, 74] , - [115, 115, 124] , + [115, 115, 126] , [116, 122, 74] ] , [ [48, 95, -29] , [97, 99, 74] , - [100, 100, 125] , + [100, 100, 127] , [101, 122, 74] ] , [ [48, 95, -29] , [97, 114, 74] , - [115, 115, 126] , + [115, 115, 128] , [116, 122, 74] ] , [ [48, 95, -29] , [97, 115, 74] , - [116, 116, 127] , + [116, 116, 129] , [117, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 128] , + [101, 101, 130] , [102, 122, 74] ] , [ [48, 95, -29] , - [97, 97, 129] , + [97, 97, 131] , [98, 122, 74] ] , [ [48, 109, -39] , - [110, 110, 130] , + [110, 110, 132] , [111, 122, 74] ] , [ @@ -2493,151 +2563,163 @@ class Lexer ] , [ [48, 114, -79] , - [115, 115, 131] , + [115, 115, 133] , [116, 122, 74] ] , [ [48, 99, -78] , - [100, 100, 132] , + [100, 100, 134] , [101, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 133] , + [116, 116, 135] , [117, 122, 74] ] , [ [48, 107, -31] , - [108, 108, 134] , + [108, 108, 136] , [109, 122, 74] ] , [ [48, 113, -30] , - [114, 114, 135] , + [114, 114, 137] , [115, 122, 74] ] , [ + [48, 109, -39] , + [110, 110, 138] , + [111, 122, 74] + ] , + [ [48, 122, -35] ] , [ [48, 95, -29] , [97, 111, 74] , - [112, 112, 136] , + [112, 112, 139] , [113, 122, 74] ] , [ [48, 95, -29] , [97, 104, 74] , - [105, 105, 137] , + [105, 105, 140] , [106, 115, 74] , - [116, 116, 138] , + [116, 116, 141] , [117, 122, 74] ] , [ [48, 95, -29] , - [97, 97, 139] , - [98, 122, 74] + [97, 97, 142] , + [98, 114, 74] , + [115, 115, 143] , + [116, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 140] , + [116, 116, 144] , [117, 122, 74] ] , [ [48, 95, -29] , [97, 118, 74] , - [119, 119, 141] , + [119, 119, 145] , [120, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 142] , + [116, 116, 146] , [117, 122, 74] ] , [ [48, 107, -31] , - [108, 108, 143] , + [108, 108, 147] , [109, 122, 74] ] , [ [48, 95, -29] , [97, 98, 74] , - [99, 99, 144] , + [99, 99, 148] , [100, 122, 74] ] , [ [48, 122, -35] ] , [ - [48, 98, -98] , - [99, 99, 145] , + [48, 98, -99] , + [99, 99, 149] , [100, 122, 74] ] , [ - [48, 104, -92] , - [105, 105, 146] , + [48, 104, -93] , + [105, 105, 150] , [106, 110, 74] , - [111, 111, 147] , + [111, 111, 151] , [112, 122, 74] ] , [ [48, 95, -29] , - [97, 97, 148] , + [97, 97, 152] , [98, 99, 74] , - [100, 100, 149] , + [100, 100, 153] , [101, 115, 74] , - [116, 116, 150] , + [116, 116, 154] , [117, 122, 74] ] , [ [48, 107, -31] , - [108, 108, 151] , + [108, 108, 155] , [109, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 152] , + [101, 101, 156] , [102, 122, 74] ] , [ - [48, 111, -91] , - [112, 112, 153] , + [48, 111, -92] , + [112, 112, 157] , [113, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 154] , + [101, 101, 158] , [102, 122, 74] ] , [ [48, 95, -29] , [97, 116, 74] , - [117, 117, 155] , + [117, 117, 159] , [118, 122, 74] ] , [ - [48, 111, -91] , - [112, 112, 156] , + [48, 111, -92] , + [112, 112, 160] , [113, 122, 74] ] , [ - [48, 104, -92] , - [105, 105, 157] , + [48, 104, -93] , + [105, 105, 161] , [106, 122, 74] ] , [ [48, 113, -30] , - [114, 114, 158] , + [114, 114, 162] , [115, 122, 74] ] , [ - [48, 104, -92] , - [105, 105, 159] , + [48, 104, -93] , + [105, 105, 163] , [106, 122, 74] ] , [ - [48, 104, -92] , - [105, 105, 160] , + [48, 115, -80] , + [116, 116, 164] , + [117, 122, 74] + ] , + [ + [48, 104, -93] , + [105, 105, 165] , [106, 122, 74] ] , [ @@ -2645,9 +2727,9 @@ class Lexer ] , nil_array , [ - [0, 9, 161] , - [11, 12, 161] , - [14, 255, 161] + [0, 9, 166] , + [11, 12, 166] , + [14, 255, 166] ] , nil_array , [ @@ -2670,12 +2752,12 @@ class Lexer ] , [ [48, 113, -30] , - [114, 114, 162] , + [114, 114, 167] , [115, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 163] , + [116, 116, 168] , [117, 122, 74] ] , [ @@ -2683,32 +2765,32 @@ class Lexer ] , [ [48, 100, -37] , - [101, 101, 164] , + [101, 101, 169] , [102, 122, 74] ] , [ [48, 113, -30] , - [114, 114, 165] , + [114, 114, 170] , [115, 122, 74] ] , [ [48, 95, -29] , - [97, 97, 166] , + [97, 97, 171] , [98, 122, 74] ] , [ [48, 114, -79] , - [115, 115, 167] , + [115, 115, 172] , [116, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 168] , + [116, 116, 173] , [117, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 169] , + [101, 101, 174] , [102, 122, 74] ] , [ @@ -2716,40 +2798,48 @@ class Lexer ] , [ [48, 100, -37] , - [101, 101, 170] , + [101, 101, 175] , [102, 122, 74] ] , [ [48, 114, -79] , - [115, 115, 171] , + [115, 115, 176] , [116, 122, 74] ] , [ [48, 122, -35] ] , [ + [48, 122, -35] + ] , + [ [48, 110, -32] , - [111, 111, 172] , + [111, 111, 177] , [112, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 173] , + [116, 116, 178] , [117, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 174] , + [101, 101, 179] , [102, 113, 74] , - [114, 114, 175] , + [114, 114, 180] , [115, 122, 74] ] , [ [48, 122, -35] ] , [ + [48, 100, -37] , + [101, 101, 181] , + [102, 122, 74] + ] , + [ [48, 103, -43] , - [104, 104, 176] , + [104, 104, 182] , [105, 122, 74] ] , [ @@ -2760,79 +2850,79 @@ class Lexer ] , [ [48, 107, -31] , - [108, 108, 177] , + [108, 108, 183] , [109, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 178] , + [101, 101, 184] , [102, 122, 74] ] , [ [48, 95, -29] , [97, 106, 74] , - [107, 107, 179] , + [107, 107, 185] , [108, 122, 74] ] , [ [48, 95, -29] , [97, 117, 74] , - [118, 118, 180] , + [118, 118, 186] , [119, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 181] , + [116, 116, 187] , [117, 122, 74] ] , [ [48, 99, -78] , - [100, 100, 182] , + [100, 100, 188] , [101, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 183] , + [101, 101, 189] , [102, 122, 74] ] , [ - [48, 116, -107] , - [117, 117, 184] , + [48, 116, -108] , + [117, 117, 190] , [118, 122, 74] ] , [ [48, 101, -36] , - [102, 102, 185] , + [102, 102, 191] , [103, 122, 74] ] , [ - [48, 98, -98] , - [99, 99, 186] , + [48, 98, -99] , + [99, 99, 192] , [100, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 187] , + [101, 101, 193] , [102, 122, 74] ] , [ [48, 109, -39] , - [110, 110, 188] , + [110, 110, 194] , [111, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 189] , + [101, 101, 195] , [102, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 190] , + [101, 101, 196] , [102, 122, 74] ] , [ - [48, 117, -148] , - [118, 118, 191] , + [48, 117, -152] , + [118, 118, 197] , [119, 122, 74] ] , [ @@ -2840,12 +2930,17 @@ class Lexer ] , [ [48, 107, -31] , - [108, 108, 192] , + [108, 108, 198] , [109, 122, 74] ] , [ + [48, 103, -43] , + [104, 104, 199] , + [105, 122, 74] + ] , + [ [48, 115, -80] , - [116, 116, 193] , + [116, 116, 200] , [117, 122, 74] ] , [ @@ -2853,35 +2948,35 @@ class Lexer ] , [ [48, 115, -80] , - [116, 116, 194] , + [116, 116, 201] , [117, 122, 74] ] , [ [48, 113, -30] , - [114, 114, 195] , + [114, 114, 202] , [115, 122, 74] ] , [ [48, 113, -30] , - [114, 114, 196] , + [114, 114, 203] , [115, 122, 74] ] , [ [48, 122, -35] ] , [ - [48, 106, -147] , - [107, 107, 197] , + [48, 106, -151] , + [107, 107, 204] , [108, 122, 74] ] , [ [48, 114, -79] , - [115, 115, 198] , + [115, 115, 205] , [116, 122, 74] ] , [ - [48, 104, -92] , - [105, 105, 199] , + [48, 104, -93] , + [105, 105, 206] , [106, 122, 74] ] , [ @@ -2889,17 +2984,17 @@ class Lexer ] , [ [48, 113, -30] , - [114, 114, 200] , + [114, 114, 207] , [115, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 201] , + [101, 101, 208] , [102, 122, 74] ] , [ [48, 113, -30] , - [114, 114, 202] , + [114, 114, 209] , [115, 122, 74] ] , [ @@ -2907,64 +3002,71 @@ class Lexer ] , [ [48, 113, -30] , - [114, 114, 203] , + [114, 114, 210] , [115, 122, 74] ] , [ - [48, 116, -107] , - [117, 117, 204] , + [48, 116, -108] , + [117, 117, 211] , [118, 122, 74] ] , [ - [48, 122, -35] + [48, 115, -80] , + [116, 116, 212] , + [117, 122, 74] ] , [ [48, 122, -35] ] , [ + [48, 95, -29] , + [97, 97, 213] , + [98, 122, 74] + ] , + [ [48, 122, -35] ] , [ [48, 95, -29] , - [97, 97, 205] , + [97, 97, 214] , [98, 122, 74] ] , [ [48, 95, -29] , - [97, 97, 206] , + [97, 97, 215] , [98, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 207] , + [101, 101, 216] , [102, 122, 74] ] , [ [48, 95, -29] , - [97, 97, 208] , + [97, 97, 217] , [98, 122, 74] ] , [ [48, 101, -36] , - [102, 102, 209] , + [102, 102, 218] , [103, 122, 74] ] , [ [48, 113, -30] , - [114, 114, 210] , + [114, 114, 219] , [115, 122, 74] ] , [ [48, 122, -35] ] , [ - [48, 104, -92] , - [105, 105, 211] , + [48, 104, -93] , + [105, 105, 220] , [106, 122, 74] ] , [ [48, 113, -30] , - [114, 114, 212] , + [114, 114, 221] , [115, 122, 74] ] , [ @@ -2978,17 +3080,20 @@ class Lexer ] , [ [48, 100, -37] , - [101, 101, 213] , + [101, 101, 222] , [102, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 214] , + [101, 101, 223] , [102, 122, 74] ] , [ + [48, 122, -35] + ] , + [ [48, 95, -29] , - [97, 97, 215] , + [97, 97, 224] , [98, 122, 74] ] , [ @@ -2996,12 +3101,12 @@ class Lexer ] , [ [48, 95, -29] , - [97, 97, 216] , + [97, 97, 225] , [98, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 217] , + [116, 116, 226] , [117, 122, 74] ] , [ @@ -3012,12 +3117,12 @@ class Lexer ] , [ [48, 109, -39] , - [110, 110, 218] , + [110, 110, 227] , [111, 122, 74] ] , [ [48, 109, -39] , - [110, 110, 219] , + [110, 110, 228] , [111, 122, 74] ] , [ @@ -3025,40 +3130,48 @@ class Lexer ] , [ [48, 115, -80] , - [116, 116, 220] , + [116, 116, 229] , [117, 122, 74] ] , [ [48, 101, -36] , - [102, 102, 221] , + [102, 102, 230] , [103, 109, 74] , - [110, 110, 222] , + [110, 110, 231] , [111, 122, 74] ] , [ [48, 99, -78] , - [100, 100, 223] , + [100, 100, 232] , [101, 122, 74] ] , [ + [48, 122, -35] + ] , + [ + [48, 97, -29] , + [98, 98, 233] , + [99, 122, 74] + ] , + [ [48, 95, -29] , [97, 102, 74] , - [103, 103, 224] , + [103, 103, 234] , [104, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 225] , + [116, 116, 235] , [117, 122, 74] ] , [ - [48, 98, -98] , - [99, 99, 226] , + [48, 98, -99] , + [99, 99, 236] , [100, 122, 74] ] , [ [48, 97, -29] , - [98, 98, 227] , + [98, 98, 237] , [99, 122, 74] ] , [ @@ -3066,12 +3179,12 @@ class Lexer ] , [ [48, 109, -39] , - [110, 110, 228] , + [110, 110, 238] , [111, 122, 74] ] , [ [48, 95, -29] , - [97, 97, 229] , + [97, 97, 239] , [98, 122, 74] ] , [ @@ -3079,7 +3192,7 @@ class Lexer ] , [ [48, 113, -30] , - [114, 114, 230] , + [114, 114, 240] , [115, 122, 74] ] , [ @@ -3087,20 +3200,20 @@ class Lexer ] , [ [48, 97, -29] , - [98, 98, 231] , + [98, 98, 241] , [99, 122, 74] ] , [ - [48, 98, -98] , - [99, 99, 232] , + [48, 98, -99] , + [99, 99, 242] , [100, 122, 74] ] , [ [48, 122, -35] ] , [ - [48, 116, -107] , - [117, 117, 233] , + [48, 116, -108] , + [117, 117, 243] , [118, 122, 74] ] , [ @@ -3111,7 +3224,7 @@ class Lexer ] , [ [48, 95, -29] , - [97, 97, 234] , + [97, 97, 244] , [98, 122, 74] ] , [ @@ -3119,27 +3232,32 @@ class Lexer ] , [ [48, 100, -37] , - [101, 101, 235] , + [101, 101, 245] , [102, 122, 74] ] , [ + [48, 107, -31] , + [108, 108, 246] , + [109, 122, 74] + ] , + [ [48, 100, -37] , - [101, 101, 236] , + [101, 101, 247] , [102, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 237] , + [101, 101, 248] , [102, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 238] , + [116, 116, 249] , [117, 122, 74] ] , [ [48, 107, -31] , - [108, 108, 239] , + [108, 108, 250] , [109, 122, 74] ] , [ @@ -3147,38 +3265,43 @@ class Lexer ] , [ [48, 107, -31] , - [108, 108, 240] , + [108, 108, 251] , [109, 122, 74] ] , [ [48, 114, -79] , - [115, 115, 241] , + [115, 115, 252] , [116, 122, 74] ] , [ [48, 107, -31] , - [108, 108, 242] , + [108, 108, 253] , [109, 122, 74] ] , [ [48, 115, -80] , - [116, 116, 243] , + [116, 116, 254] , [117, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 244] , + [101, 101, 255] , [102, 122, 74] ] , [ - [48, 98, -98] , - [99, 99, 245] , + [48, 98, -99] , + [99, 99, 256] , [100, 122, 74] ] , [ [48, 122, -35] ] , [ + [48, 100, -37] , + [101, 101, 257] , + [102, 122, 74] + ] , + [ [48, 122, -35] ] , [ @@ -3186,12 +3309,12 @@ class Lexer ] , [ [48, 100, -37] , - [101, 101, 246] , + [101, 101, 258] , [102, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 247] , + [101, 101, 259] , [102, 122, 74] ] , [ @@ -3199,12 +3322,12 @@ class Lexer ] , [ [48, 95, -29] , - [97, 97, 248] , + [97, 97, 260] , [98, 122, 74] ] , [ [48, 100, -37] , - [101, 101, 249] , + [101, 101, 261] , [102, 122, 74] ] , [ @@ -3215,12 +3338,15 @@ class Lexer ] , [ [48, 100, -37] , - [101, 101, 250] , + [101, 101, 262] , [102, 122, 74] ] , [ + [48, 122, -35] + ] , + [ [48, 99, -78] , - [100, 100, 251] , + [100, 100, 263] , [101, 122, 74] ] , [ @@ -3228,7 +3354,7 @@ class Lexer ] , [ [48, 107, -31] , - [108, 108, 252] , + [108, 108, 264] , [109, 122, 74] ] , [ @@ -3256,7 +3382,7 @@ class Lexer private meth build_accept_table do _accept_table = once [ [ - -1 , 0 , 1 , 1 , 0 , -1 , -1 , -1 , 66 , -1 , 49 , 50 , 64 , 62 , 53 , 63 , 61 , 65 , 77 , 54 , 69 , 56 , 71 , 74 , 51 , 52 , -1 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , -1 , 1 , 68 , -1 , 80 , -1 , 81 , -1 , 2 , 2 , -1 , 79 , 57 , 58 , 60 , 78 , -1 , 55 , 70 , 67 , 72 , 74 , 74 , 74 , 74 , 76 , 75 , 75 , 75 , 75 , 75 , 75 , 48 , 75 , 75 , 75 , 75 , 17 , 75 , 75 , 75 , 75 , 75 , 26 , 75 , 31 , 16 , 75 , 75 , 75 , 75 , 75 , 33 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , -1 , 83 , -1 , 82 , -1 , 2 , 59 , 73 , 76 , 76 , 76 , 76 , 75 , 75 , 32 , 75 , 75 , 75 , 75 , 75 , 75 , 10 , 75 , 75 , 30 , 75 , 75 , 75 , 41 , 75 , 40 , 34 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 20 , 75 , 75 , -1 , 75 , 75 , 75 , 13 , 75 , 75 , 75 , 28 , 75 , 75 , 75 , 14 , 75 , 75 , 11 , 47 , 42 , 75 , 75 , 75 , 75 , 75 , 75 , 44 , 75 , 75 , 27 , 45 , 12 , 75 , 75 , 75 , 38 , 75 , 75 , 37 , 5 , 75 , 75 , 46 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 15 , 75 , 75 , 43 , 75 , 29 , 75 , 75 , 39 , 75 , 22 , 4 , 75 , 21 , 75 , 75 , 75 , 75 , 75 , 35 , 75 , 75 , 75 , 75 , 75 , 75 , 25 , 3 , 24 , 75 , 75 , 9 , 75 , 75 , 6 , 36 , 75 , 75 , 18 , 75 , 19 , 7 , 23 , 8 + -1 , 0 , 1 , 1 , 0 , -1 , -1 , -1 , 69 , -1 , 52 , 53 , 67 , 65 , 56 , 66 , 64 , 68 , 80 , 57 , 72 , 59 , 74 , 77 , 54 , 55 , -1 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , -1 , 1 , 71 , -1 , 83 , -1 , 84 , -1 , 2 , 2 , -1 , 82 , 60 , 61 , 63 , 81 , -1 , 58 , 73 , 70 , 75 , 77 , 77 , 77 , 77 , 79 , 78 , 78 , 78 , 78 , 78 , 78 , 48 , 78 , 78 , 78 , 78 , 17 , 78 , 78 , 78 , 78 , 78 , 78 , 26 , 78 , 31 , 16 , 78 , 78 , 78 , 78 , 78 , 33 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , -1 , 86 , -1 , 85 , -1 , 2 , 62 , 76 , 79 , 79 , 79 , 79 , 78 , 78 , 32 , 78 , 78 , 78 , 78 , 78 , 78 , 10 , 78 , 78 , 30 , 11 , 78 , 78 , 78 , 41 , 78 , 78 , 40 , 34 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 78 , 20 , 78 , 78 , 78 , -1 , 78 , 78 , 78 , 13 , 78 , 78 , 78 , 28 , 78 , 78 , 78 , 14 , 78 , 78 , 78 , 11 , 47 , 42 , 78 , 78 , 78 , 78 , 78 , 78 , 44 , 78 , 78 , 27 , 45 , 12 , 78 , 78 , 49 , 78 , 38 , 78 , 78 , 37 , 5 , 78 , 78 , 46 , 78 , 78 , 78 , 51 , 78 , 78 , 78 , 78 , 78 , 15 , 78 , 78 , 43 , 78 , 29 , 78 , 78 , 39 , 78 , 22 , 4 , 78 , 21 , 78 , 78 , 78 , 78 , 78 , 78 , 35 , 78 , 78 , 78 , 78 , 78 , 78 , 25 , 78 , 3 , 24 , 78 , 78 , 9 , 78 , 78 , 6 , 36 , 78 , 50 , 78 , 18 , 78 , 19 , 7 , 23 , 8 ] ]