package lexer
intrude import parser_nodes
+private import tables
redef class Token
- readable writable var _text: String
-
+ readable var _text: String
+
fun parser_index: Int is abstract
redef fun to_s: String do
redef class TEol
redef fun parser_index: Int
do
- return 0
+ return 0
end
init init_tk(text: String, loc: Location)
redef class TComment
redef fun parser_index: Int
do
- return 1
+ return 1
end
init init_tk(text: String, loc: Location)
end
end
-redef class TKwpackage
+redef class TKwmodule
redef fun parser_index: Int
do
- return 2
+ return 2
end
- init init_tk(loc: Location)
+ init init_tk(text: String, loc: Location)
do
- _text = once "package"
+ _text = text
_location = loc
end
end
redef class TKwimport
redef fun parser_index: Int
do
- return 3
+ return 3
end
init init_tk(loc: Location)
redef class TKwclass
redef fun parser_index: Int
do
- return 4
+ return 4
end
init init_tk(loc: Location)
redef class TKwabstract
redef fun parser_index: Int
do
- return 5
+ return 5
end
init init_tk(loc: Location)
redef class TKwinterface
redef fun parser_index: Int
do
- return 6
+ return 6
end
init init_tk(loc: Location)
end
end
-redef class TKwuniversal
+redef class TKwenum
redef fun parser_index: Int
do
- return 7
+ return 7
end
- init init_tk(loc: Location)
+ init init_tk(text: String, loc: Location)
do
- _text = once "universal"
+ _text = text
_location = loc
end
end
redef class TKwspecial
redef fun parser_index: Int
do
- return 8
+ return 8
end
init init_tk(loc: Location)
redef class TKwend
redef fun parser_index: Int
do
- return 9
+ return 9
end
init init_tk(loc: Location)
redef class TKwmeth
redef fun parser_index: Int
do
- return 10
+ return 10
end
- init init_tk(text: String, loc: Location)
+ init init_tk(loc: Location)
do
- _text = text
+ _text = once "fun"
_location = loc
end
end
redef class TKwtype
redef fun parser_index: Int
do
- return 11
+ return 11
end
init init_tk(loc: Location)
end
end
-redef class TKwattr
- redef fun parser_index: Int
- do
- return 12
- end
-
- init init_tk(loc: Location)
- do
- _text = once "attr"
- _location = loc
- end
-end
-
redef class TKwinit
redef fun parser_index: Int
do
- return 13
+ return 12
end
init init_tk(loc: Location)
redef class TKwredef
redef fun parser_index: Int
do
- return 14
+ return 13
end
init init_tk(loc: Location)
redef class TKwis
redef fun parser_index: Int
do
- return 15
+ return 14
end
init init_tk(loc: Location)
redef class TKwdo
redef fun parser_index: Int
do
- return 16
+ return 15
end
init init_tk(loc: Location)
redef class TKwreadable
redef fun parser_index: Int
do
- return 17
+ return 16
end
init init_tk(loc: Location)
redef class TKwwritable
redef fun parser_index: Int
do
- return 18
+ return 17
end
init init_tk(loc: Location)
redef class TKwvar
redef fun parser_index: Int
do
- return 19
+ return 18
end
init init_tk(loc: Location)
redef class TKwintern
redef fun parser_index: Int
do
- return 20
+ return 19
end
init init_tk(loc: Location)
redef class TKwextern
redef fun parser_index: Int
do
- return 21
+ return 20
end
init init_tk(loc: Location)
redef class TKwprotected
redef fun parser_index: Int
do
- return 22
+ return 21
end
init init_tk(loc: Location)
redef class TKwprivate
redef fun parser_index: Int
do
- return 23
+ return 22
end
init init_tk(loc: Location)
redef class TKwintrude
redef fun parser_index: Int
do
- return 24
+ return 23
end
init init_tk(loc: Location)
redef class TKwif
redef fun parser_index: Int
do
- return 25
+ return 24
end
init init_tk(loc: Location)
redef class TKwthen
redef fun parser_index: Int
do
- return 26
+ return 25
end
init init_tk(loc: Location)
redef class TKwelse
redef fun parser_index: Int
do
- return 27
+ return 26
end
init init_tk(loc: Location)
redef class TKwwhile
redef fun parser_index: Int
do
- return 28
+ return 27
end
init init_tk(loc: Location)
end
end
+redef class TKwloop
+ redef fun parser_index: Int
+ do
+ return 28
+ end
+
+ init init_tk(loc: Location)
+ do
+ _text = once "loop"
+ _location = loc
+ end
+end
+
redef class TKwfor
redef fun parser_index: Int
do
- return 29
+ return 29
end
init init_tk(loc: Location)
redef class TKwin
redef fun parser_index: Int
do
- return 30
+ return 30
end
init init_tk(loc: Location)
redef class TKwand
redef fun parser_index: Int
do
- return 31
+ return 31
end
init init_tk(loc: Location)
redef class TKwor
redef fun parser_index: Int
do
- return 32
+ return 32
end
init init_tk(loc: Location)
redef class TKwnot
redef fun parser_index: Int
do
- return 33
+ return 33
end
init init_tk(loc: Location)
redef class TKwreturn
redef fun parser_index: Int
do
- return 34
+ return 34
end
init init_tk(loc: Location)
redef class TKwcontinue
redef fun parser_index: Int
do
- return 35
+ return 35
end
init init_tk(loc: Location)
redef class TKwbreak
redef fun parser_index: Int
do
- return 36
+ return 36
end
init init_tk(loc: Location)
redef class TKwabort
redef fun parser_index: Int
do
- return 37
+ return 37
end
init init_tk(loc: Location)
redef class TKwassert
redef fun parser_index: Int
do
- return 38
+ return 38
end
init init_tk(loc: Location)
redef class TKwnew
redef fun parser_index: Int
do
- return 39
+ return 39
end
init init_tk(loc: Location)
redef class TKwisa
redef fun parser_index: Int
do
- return 40
+ return 40
end
init init_tk(loc: Location)
redef class TKwonce
redef fun parser_index: Int
do
- return 41
+ return 41
end
init init_tk(loc: Location)
redef class TKwsuper
redef fun parser_index: Int
do
- return 42
+ return 42
end
init init_tk(loc: Location)
redef class TKwself
redef fun parser_index: Int
do
- return 43
+ return 43
end
init init_tk(loc: Location)
redef class TKwtrue
redef fun parser_index: Int
do
- return 44
+ return 44
end
init init_tk(loc: Location)
redef class TKwfalse
redef fun parser_index: Int
do
- return 45
+ return 45
end
init init_tk(loc: Location)
redef class TKwnull
redef fun parser_index: Int
do
- return 46
+ return 46
end
init init_tk(loc: Location)
redef class TKwas
redef fun parser_index: Int
do
- return 47
+ return 47
end
init init_tk(loc: Location)
end
end
-redef class TKwwith
- redef fun parser_index: Int
- do
- return 48
- end
-
- init init_tk(loc: Location)
- do
- _text = once "with"
- _location = loc
- end
-end
-
redef class TKwnullable
redef fun parser_index: Int
do
- return 49
+ return 48
end
init init_tk(loc: Location)
redef class TKwisset
redef fun parser_index: Int
do
- return 50
+ return 49
end
init init_tk(loc: Location)
redef class TKwlabel
redef fun parser_index: Int
do
- return 51
+ return 50
end
init init_tk(loc: Location)
redef class TOpar
redef fun parser_index: Int
do
- return 52
+ return 51
end
init init_tk(loc: Location)
redef class TCpar
redef fun parser_index: Int
do
- return 53
+ return 52
end
init init_tk(loc: Location)
redef class TObra
redef fun parser_index: Int
do
- return 54
+ return 53
end
init init_tk(loc: Location)
redef class TCbra
redef fun parser_index: Int
do
- return 55
+ return 54
end
init init_tk(loc: Location)
redef class TComma
redef fun parser_index: Int
do
- return 56
+ return 55
end
init init_tk(loc: Location)
redef class TColumn
redef fun parser_index: Int
do
- return 57
+ return 56
end
init init_tk(loc: Location)
redef class TQuad
redef fun parser_index: Int
do
- return 58
+ return 57
end
init init_tk(loc: Location)
redef class TAssign
redef fun parser_index: Int
do
- return 59
+ return 58
end
init init_tk(loc: Location)
redef class TPluseq
redef fun parser_index: Int
do
- return 60
+ return 59
end
init init_tk(loc: Location)
redef class TMinuseq
redef fun parser_index: Int
do
- return 61
+ return 60
end
init init_tk(loc: Location)
redef class TDotdotdot
redef fun parser_index: Int
do
- return 62
+ return 61
end
init init_tk(loc: Location)
redef class TDotdot
redef fun parser_index: Int
do
- return 63
+ return 62
end
init init_tk(loc: Location)
redef class TDot
redef fun parser_index: Int
do
- return 64
+ return 63
end
init init_tk(loc: Location)
redef class TPlus
redef fun parser_index: Int
do
- return 65
+ return 64
end
init init_tk(loc: Location)
redef class TMinus
redef fun parser_index: Int
do
- return 66
+ return 65
end
init init_tk(loc: Location)
redef class TStar
redef fun parser_index: Int
do
- return 67
+ return 66
end
init init_tk(loc: Location)
redef class TSlash
redef fun parser_index: Int
do
- return 68
+ return 67
end
init init_tk(loc: Location)
redef class TPercent
redef fun parser_index: Int
do
- return 69
+ return 68
end
init init_tk(loc: Location)
redef class TEq
redef fun parser_index: Int
do
- return 70
+ return 69
end
init init_tk(loc: Location)
redef class TNe
redef fun parser_index: Int
do
- return 71
+ return 70
end
init init_tk(loc: Location)
redef class TLt
redef fun parser_index: Int
do
- return 72
+ return 71
end
init init_tk(loc: Location)
redef class TLe
redef fun parser_index: Int
do
- return 73
+ return 72
end
init init_tk(loc: Location)
end
end
+redef class TLl
+ redef fun parser_index: Int
+ do
+ return 73
+ end
+
+ init init_tk(loc: Location)
+ do
+ _text = once "<<"
+ _location = loc
+ end
+end
+
redef class TGt
redef fun parser_index: Int
do
- return 74
+ return 74
end
init init_tk(loc: Location)
redef class TGe
redef fun parser_index: Int
do
- return 75
+ return 75
end
init init_tk(loc: Location)
end
end
+redef class TGg
+ redef fun parser_index: Int
+ do
+ return 76
+ end
+
+ init init_tk(loc: Location)
+ do
+ _text = once ">>"
+ _location = loc
+ end
+end
+
redef class TStarship
redef fun parser_index: Int
do
- return 76
+ return 77
end
init init_tk(loc: Location)
end
end
+redef class TBang
+ redef fun parser_index: Int
+ do
+ return 78
+ end
+
+ init init_tk(loc: Location)
+ do
+ _text = once "!"
+ _location = loc
+ end
+end
+
redef class TClassid
redef fun parser_index: Int
do
- return 77
+ return 79
end
init init_tk(text: String, loc: Location)
redef class TId
redef fun parser_index: Int
do
- return 78
+ return 80
end
init init_tk(text: String, loc: Location)
redef class TAttrid
redef fun parser_index: Int
do
- return 79
+ return 81
end
init init_tk(text: String, loc: Location)
redef class TNumber
redef fun parser_index: Int
do
- return 80
+ return 82
end
init init_tk(text: String, loc: Location)
redef class TFloat
redef fun parser_index: Int
do
- return 81
+ return 83
end
init init_tk(text: String, loc: Location)
redef class TChar
redef fun parser_index: Int
do
- return 82
+ return 84
end
init init_tk(text: String, loc: Location)
redef class TString
redef fun parser_index: Int
do
- return 83
+ return 85
end
init init_tk(text: String, loc: Location)
redef class TStartString
redef fun parser_index: Int
do
- return 84
+ return 86
end
init init_tk(text: String, loc: Location)
redef class TMidString
redef fun parser_index: Int
do
- return 85
+ return 87
end
init init_tk(text: String, loc: Location)
redef class TEndString
redef fun parser_index: Int
do
- return 86
+ return 88
end
init init_tk(text: String, loc: Location)
end
-redef class EOF
+redef class EOF
redef fun parser_index: Int
do
- return 87
+ return 89
end
-
+
init(loc: Location)
do
_text = ""
end
redef class AError
- readable writable var _message: String
-
+ readable var _message: String
+
init init_error(message: String, loc: Location)
do
init(loc)
# The lexer extract NIT tokens from an input stream.
# It is better user with the Parser
class Lexer
+ super TablesCapable
# Last peeked token
var _token: nullable Token
# Lexer current state
var _state: Int = 0
- # Name of the stream (as given to tokens)
- readable var _filename: String
+ # The source file
+ readable var _file: SourceFile
- # Input stream where character are read
- var _stream: IStream
-
- # Pushback buffer to store unread character
- var _stream_buf: Buffer
-
- # Number of character stored in the pushback buffer
- var _stream_pos: Int
+ # Current character in the stream
+ var _stream_pos: Int = 0
# Current line number in the input stream
var _line: Int = 0
# Was the last character a cariage-return?
var _cr: Bool = false
- # If the end of stream?
- var _eof: Bool = false
-
- # Current working text read from the input stream
- var _text: Buffer
-
# Constante state values
private fun state_initial: Int do return 0 end
# Create a new lexer for a stream (and a name)
- init(stream: IStream, fname: String)
+ init(file: SourceFile)
do
- _filename = fname
- _text = new Buffer
- _stream = stream
- _stream_pos = -1
- _stream_buf = new Buffer
- build_goto_table
- build_accept_table
+ _file = file
end
# Give the next token (but do not consume it)
result = get_token
end
_token = null
- return result.as(not null)
+ return result
end
# Get a token, or null if it is discarded
do
var dfa_state = 0
+ var sp = _stream_pos
+ var start_stream_pos = sp
var start_pos = _pos
var start_line = _line
+ var string = _file.string
+ var string_len = string.length
var accept_state = -1
var accept_token = -1
var accept_pos = -1
var accept_line = -1
- var goto_table = _goto_table[_state]
- var accept = _accept_table[_state]
- var text = _text
- text.clear
-
- while true do
- var c = get_char
+ loop
+ if sp >= string_len then
+ dfa_state = -1
+ else
+ var c = string[sp].ascii
+ sp += 1
- if c != -1 then
var cr = _cr
var line = _line
var pos = _pos
if c == 10 then
if cr then
cr = false
+ _file.line_starts[line] = sp
else
line = line + 1
pos = 0
+ _file.line_starts[line] = sp
end
else if c == 13 then
line = line + 1
pos = 0
cr = true
+ _file.line_starts[line] = sp
else
pos = pos + 1
cr = false
end
- text.add(c.ascii)
-
- var first_loop = true # aka until
- while dfa_state < -1 or first_loop do
+ loop
var old_state = dfa_state
if dfa_state < -1 then
old_state = -2 - dfa_state
dfa_state = -1
- var tmp0 = goto_table[old_state]
var low = 0
- var high = tmp0.length - 1
+ var high = lexer_goto(old_state, 0) - 1
if high >= 0 then
- var tmp1 = tmp0.intern_items
while low <= high do
var middle = (low + high) / 2
- var tmp2 = tmp1[middle].intern_items
+ var offset = middle * 3 + 1 # +1 because length is at 0
- if c < tmp2[0] then
+ if c < lexer_goto(old_state, offset) then
high = middle - 1
- else if c > tmp2[1] then
+ else if c > lexer_goto(old_state, offset+1) then
low = middle + 1
else
- dfa_state = tmp2[2]
- low = high + 1 # aka break
+ dfa_state = lexer_goto(old_state, offset+2)
+ break
end
end
end
- first_loop = false # aka until
+ if dfa_state > -2 then break
end
_cr = cr
_line = line
_pos = pos
- else
- dfa_state = -1
end
if dfa_state >= 0 then
- if accept[dfa_state] != -1 then
+ var tok = lexer_accept(dfa_state)
+ if tok != -1 then
accept_state = dfa_state
- accept_token = accept[dfa_state]
- accept_length = text.length
+ accept_token = tok
+ accept_length = sp - start_stream_pos
accept_pos = _pos
accept_line = _line
end
else
if accept_state != -1 then
+ var location = new Location(_file, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
+ _pos = accept_pos
+ _line = accept_line
+ _stream_pos = start_stream_pos + accept_length
if accept_token == 0 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
return null
end
if accept_token == 1 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TEol.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TEol.init_tk(token_text, location)
end
if accept_token == 2 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TComment.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TComment.init_tk(token_text, location)
end
if accept_token == 3 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwpackage.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TKwmodule.init_tk(token_text, location)
end
if accept_token == 4 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwimport.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwimport.init_tk(location)
end
if accept_token == 5 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwclass.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwclass.init_tk(location)
end
if accept_token == 6 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwabstract.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwabstract.init_tk(location)
end
if accept_token == 7 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwinterface.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwinterface.init_tk(location)
end
if accept_token == 8 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwuniversal.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TKwenum.init_tk(token_text, location)
end
if accept_token == 9 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwspecial.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwspecial.init_tk(location)
end
if accept_token == 10 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwend.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwend.init_tk(location)
end
if accept_token == 11 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TKwmeth.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwmeth.init_tk(location)
end
if accept_token == 12 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwtype.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwtype.init_tk(location)
end
if accept_token == 13 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwattr.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwinit.init_tk(location)
end
if accept_token == 14 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwinit.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwredef.init_tk(location)
end
if accept_token == 15 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwredef.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwis.init_tk(location)
end
if accept_token == 16 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwis.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwdo.init_tk(location)
end
if accept_token == 17 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwdo.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwreadable.init_tk(location)
end
if accept_token == 18 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwreadable.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwwritable.init_tk(location)
end
if accept_token == 19 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwwritable.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwvar.init_tk(location)
end
if accept_token == 20 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwvar.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwintern.init_tk(location)
end
if accept_token == 21 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwintern.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwextern.init_tk(location)
end
if accept_token == 22 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwextern.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwprotected.init_tk(location)
end
if accept_token == 23 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwprotected.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwprivate.init_tk(location)
end
if accept_token == 24 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwprivate.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwintrude.init_tk(location)
end
if accept_token == 25 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwintrude.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwif.init_tk(location)
end
if accept_token == 26 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwif.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwthen.init_tk(location)
end
if accept_token == 27 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwthen.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwelse.init_tk(location)
end
if accept_token == 28 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwelse.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwwhile.init_tk(location)
end
if accept_token == 29 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwwhile.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwloop.init_tk(location)
end
if accept_token == 30 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwfor.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwfor.init_tk(location)
end
if accept_token == 31 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwin.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwin.init_tk(location)
end
if accept_token == 32 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwand.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwand.init_tk(location)
end
if accept_token == 33 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwor.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwor.init_tk(location)
end
if accept_token == 34 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwnot.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwnot.init_tk(location)
end
if accept_token == 35 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwreturn.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwreturn.init_tk(location)
end
if accept_token == 36 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwcontinue.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwcontinue.init_tk(location)
end
if accept_token == 37 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwbreak.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwbreak.init_tk(location)
end
if accept_token == 38 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwabort.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwabort.init_tk(location)
end
if accept_token == 39 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwassert.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwassert.init_tk(location)
end
if accept_token == 40 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwnew.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwnew.init_tk(location)
end
if accept_token == 41 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwisa.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwisa.init_tk(location)
end
if accept_token == 42 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwonce.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwonce.init_tk(location)
end
if accept_token == 43 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwsuper.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwsuper.init_tk(location)
end
if accept_token == 44 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwself.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwself.init_tk(location)
end
if accept_token == 45 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwtrue.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwtrue.init_tk(location)
end
if accept_token == 46 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwfalse.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwfalse.init_tk(location)
end
if accept_token == 47 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwnull.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwnull.init_tk(location)
end
if accept_token == 48 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwas.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwas.init_tk(location)
end
if accept_token == 49 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwwith.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwnullable.init_tk(location)
end
if accept_token == 50 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwnullable.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwisset.init_tk(location)
end
if accept_token == 51 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwisset.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TKwlabel.init_tk(location)
end
if accept_token == 52 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TKwlabel.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TOpar.init_tk(location)
end
if accept_token == 53 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TOpar.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TCpar.init_tk(location)
end
if accept_token == 54 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TCpar.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TObra.init_tk(location)
end
if accept_token == 55 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TObra.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TCbra.init_tk(location)
end
if accept_token == 56 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TCbra.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TComma.init_tk(location)
end
if accept_token == 57 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TComma.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TColumn.init_tk(location)
end
if accept_token == 58 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TColumn.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TQuad.init_tk(location)
end
if accept_token == 59 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TQuad.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TAssign.init_tk(location)
end
if accept_token == 60 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TAssign.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TPluseq.init_tk(location)
end
if accept_token == 61 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TPluseq.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TMinuseq.init_tk(location)
end
if accept_token == 62 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TMinuseq.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TDotdotdot.init_tk(location)
end
if accept_token == 63 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TDotdotdot.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TDotdot.init_tk(location)
end
if accept_token == 64 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TDotdot.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TDot.init_tk(location)
end
if accept_token == 65 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TDot.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TPlus.init_tk(location)
end
if accept_token == 66 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TPlus.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TMinus.init_tk(location)
end
if accept_token == 67 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TMinus.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TStar.init_tk(location)
end
if accept_token == 68 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TStar.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TSlash.init_tk(location)
end
if accept_token == 69 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TSlash.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TPercent.init_tk(location)
end
if accept_token == 70 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TPercent.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TEq.init_tk(location)
end
if accept_token == 71 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TEq.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TNe.init_tk(location)
end
if accept_token == 72 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TNe.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TLt.init_tk(location)
end
if accept_token == 73 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TLt.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TLe.init_tk(location)
end
if accept_token == 74 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TLe.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TLl.init_tk(location)
end
if accept_token == 75 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TGt.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TGt.init_tk(location)
end
if accept_token == 76 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TGe.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TGe.init_tk(location)
end
if accept_token == 77 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token = new TStarship.init_tk(location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TGg.init_tk(location)
end
if accept_token == 78 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TClassid.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TStarship.init_tk(location)
end
if accept_token == 79 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TId.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ return new TBang.init_tk(location)
end
if accept_token == 80 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TAttrid.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TClassid.init_tk(token_text, location)
end
if accept_token == 81 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TNumber.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TId.init_tk(token_text, location)
end
if accept_token == 82 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TFloat.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TAttrid.init_tk(token_text, location)
end
if accept_token == 83 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TChar.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TNumber.init_tk(token_text, location)
end
if accept_token == 84 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TString.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TFloat.init_tk(token_text, location)
end
if accept_token == 85 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TStartString.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TChar.init_tk(token_text, location)
end
if accept_token == 86 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TMidString.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TString.init_tk(token_text, location)
end
if accept_token == 87 then
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- var token_text = text.substring(0, accept_length)
- var token = new TEndString.init_tk(token_text, location)
- push_back(accept_length)
- _pos = accept_pos
- _line = accept_line
- return token
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TStartString.init_tk(token_text, location)
+ end
+ if accept_token == 88 then
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TMidString.init_tk(token_text, location)
+ end
+ if accept_token == 89 then
+ var token_text = string.substring(start_stream_pos, accept_length)
+ return new TEndString.init_tk(token_text, location)
end
else
- var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
- if text.length > 0 then
- var token = new AError.init_error("Unknown token: {text}", location)
+ _stream_pos = sp
+ var location = new Location(_file, start_line + 1, start_line + 1, start_pos + 1, start_pos + 1)
+ if sp > start_stream_pos then
+ var text = string.substring(start_stream_pos, sp-start_stream_pos)
+ var token = new AError.init_error("Syntax error: unknown token {text}.", location)
return token
else
var token = new EOF(location)
end
end
end
- return null
- end
-
- # Read the next character.
- # The character is read from the stream of from the pushback buffer.
- private fun get_char: Int
- do
- if _eof then
- return -1
- end
-
- var result: Int
-
- var sp = _stream_pos
- if sp >= 0 then
- var res = _stream_buf[_stream_pos]
- _stream_pos = sp - 1
- result = res.ascii
- else
- result = _stream.read_char
- end
-
- if result == -1 then
- _eof = true
- end
-
- return result
- end
-
- # Unread some characters.
- # Unread characters are stored in the pushback buffer.
- private fun push_back(accept_length: Int)
- do
- var length = _text.length
- var i = length - 1
- while i >= accept_length do
- _eof = false
- _stream_pos = _stream_pos + 1
- _stream_buf[_stream_pos] = _text[i]
- i = i - 1
- end
- end
-
- var _goto_table: Array[Array[Array[Array[Int]]]]
- private fun build_goto_table
- do
- _goto_table = once [
- [
- [
- [9, 9, 1] ,
- [10, 10, 2] ,
- [13, 13, 3] ,
- [32, 32, 4] ,
- [33, 33, 5] ,
- [34, 34, 6] ,
- [35, 35, 7] ,
- [37, 37, 8] ,
- [39, 39, 9] ,
- [40, 40, 10] ,
- [41, 41, 11] ,
- [42, 42, 12] ,
- [43, 43, 13] ,
- [44, 44, 14] ,
- [45, 45, 15] ,
- [46, 46, 16] ,
- [47, 47, 17] ,
- [48, 57, 18] ,
- [58, 58, 19] ,
- [60, 60, 20] ,
- [61, 61, 21] ,
- [62, 62, 22] ,
- [65, 90, 23] ,
- [91, 91, 24] ,
- [93, 93, 25] ,
- [95, 95, 26] ,
- [97, 97, 27] ,
- [98, 98, 28] ,
- [99, 99, 29] ,
- [100, 100, 30] ,
- [101, 101, 31] ,
- [102, 102, 32] ,
- [103, 104, 33] ,
- [105, 105, 34] ,
- [106, 107, 33] ,
- [108, 108, 35] ,
- [109, 109, 36] ,
- [110, 110, 37] ,
- [111, 111, 38] ,
- [112, 112, 39] ,
- [113, 113, 33] ,
- [114, 114, 40] ,
- [115, 115, 41] ,
- [116, 116, 42] ,
- [117, 117, 43] ,
- [118, 118, 44] ,
- [119, 119, 45] ,
- [120, 122, 33] ,
- [125, 125, 46]
- ] ,
- [
- [9, 9, 1] ,
- [32, 32, 4]
- ] ,
- nil_array ,
- [
- [10, 10, 47]
- ] ,
- [
- [9, 32, -3]
- ] ,
- [
- [61, 61, 48]
- ] ,
- [
- [0, 9, 49] ,
- [11, 12, 49] ,
- [14, 33, 49] ,
- [34, 34, 50] ,
- [35, 91, 49] ,
- [92, 92, 51] ,
- [93, 122, 49] ,
- [123, 123, 52] ,
- [124, 255, 49]
- ] ,
- [
- [0, 9, 53] ,
- [10, 10, 54] ,
- [11, 12, 53] ,
- [13, 13, 55] ,
- [14, 255, 53]
- ] ,
- nil_array ,
- [
- [0, 9, 56] ,
- [11, 12, 56] ,
- [14, 38, 56] ,
- [39, 39, 57] ,
- [40, 255, 56]
- ] ,
- nil_array ,
- nil_array ,
- nil_array ,
- [
- [61, 61, 58]
- ] ,
- nil_array ,
- [
- [61, 61, 59]
- ] ,
- [
- [46, 46, 60] ,
- [48, 57, 61]
- ] ,
- nil_array ,
- [
- [46, 46, 62] ,
- [48, 57, 18]
- ] ,
- [
- [58, 58, 63]
- ] ,
- [
- [61, 61, 64]
- ] ,
- [
- [61, 61, 65]
- ] ,
- [
- [61, 61, 66]
- ] ,
- [
- [48, 57, 67] ,
- [65, 90, 68] ,
- [95, 95, 69] ,
- [97, 122, 70]
- ] ,
- nil_array ,
- nil_array ,
- [
- [97, 122, 71]
- ] ,
- [
- [48, 57, 72] ,
- [65, 90, 73] ,
- [95, 95, 74] ,
- [97, 97, 75] ,
- [98, 98, 76] ,
- [99, 109, 75] ,
- [110, 110, 77] ,
- [111, 114, 75] ,
- [115, 115, 78] ,
- [116, 116, 79] ,
- [117, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 113, 75] ,
- [114, 114, 80] ,
- [115, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 107, 75] ,
- [108, 108, 81] ,
- [109, 110, 75] ,
- [111, 111, 82] ,
- [112, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 110, 75] ,
- [111, 111, 83] ,
- [112, 122, 75]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 84] ,
- [109, 109, 75] ,
- [110, 110, 85] ,
- [111, 119, 75] ,
- [120, 120, 86] ,
- [121, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 87] ,
- [98, 110, 75] ,
- [111, 111, 88] ,
- [112, 116, 75] ,
- [117, 117, 89] ,
- [118, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 101, 75] ,
- [102, 102, 90] ,
- [103, 108, 75] ,
- [109, 109, 91] ,
- [110, 110, 92] ,
- [111, 114, 75] ,
- [115, 115, 93] ,
- [116, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 94] ,
- [98, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 100, 75] ,
- [101, 101, 95] ,
- [102, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 96] ,
- [102, 110, 75] ,
- [111, 111, 97] ,
- [112, 116, 75] ,
- [117, 117, 98] ,
- [118, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 109, 75] ,
- [110, 110, 99] ,
- [111, 113, 75] ,
- [114, 114, 100] ,
- [115, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 101] ,
- [98, 113, 75] ,
- [114, 114, 102] ,
- [115, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 103] ,
- [102, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 104] ,
- [102, 111, 75] ,
- [112, 112, 105] ,
- [113, 116, 75] ,
- [117, 117, 106] ,
- [118, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 103, 75] ,
- [104, 104, 107] ,
- [105, 113, 75] ,
- [114, 114, 108] ,
- [115, 120, 75] ,
- [121, 121, 109] ,
- [122, 122, 75]
- ] ,
- [
- [48, 109, -40] ,
- [110, 110, 110] ,
- [111, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 111] ,
- [98, 122, 75]
- ] ,
- [
- [48, 103, -44] ,
- [104, 104, 112] ,
- [105, 105, 113] ,
- [106, 113, 75] ,
- [114, 114, 114] ,
- [115, 122, 75]
- ] ,
- [
- [0, 9, 115] ,
- [11, 12, 115] ,
- [14, 33, 115] ,
- [34, 34, 116] ,
- [35, 91, 115] ,
- [92, 92, 117] ,
- [93, 122, 115] ,
- [123, 123, 118] ,
- [124, 255, 115]
- ] ,
- nil_array ,
- nil_array ,
- [
- [0, 255, -8]
- ] ,
- nil_array ,
- [
- [0, 9, 119] ,
- [11, 12, 119] ,
- [14, 255, 119]
- ] ,
- nil_array ,
- [
- [0, 255, -9]
- ] ,
- nil_array ,
- [
- [10, 10, 120]
- ] ,
- [
- [0, 255, -11]
- ] ,
- nil_array ,
- nil_array ,
- nil_array ,
- [
- [46, 46, 121]
- ] ,
- [
- [48, 57, 61]
- ] ,
- [
- [48, 57, 61]
- ] ,
- nil_array ,
- [
- [62, 62, 122]
- ] ,
- nil_array ,
- nil_array ,
- [
- [48, 122, -25]
- ] ,
- [
- [48, 122, -25]
- ] ,
- [
- [48, 122, -25]
- ] ,
- [
- [48, 122, -25]
- ] ,
- [
- [48, 57, 123] ,
- [65, 90, 124] ,
- [95, 95, 125] ,
- [97, 122, 126]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 110, -32] ,
- [111, 111, 127] ,
- [112, 114, 75] ,
- [115, 115, 128] ,
- [116, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 99, 75] ,
- [100, 100, 129] ,
- [101, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 114, 75] ,
- [115, 115, 130] ,
- [116, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 115, 75] ,
- [116, 116, 131] ,
- [117, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 132] ,
- [102, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 133] ,
- [98, 122, 75]
- ] ,
- [
- [48, 109, -40] ,
- [110, 110, 134] ,
- [111, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 114, -80] ,
- [115, 115, 135] ,
- [116, 122, 75]
- ] ,
- [
- [48, 99, -79] ,
- [100, 100, 136] ,
- [101, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 137] ,
- [117, 122, 75]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 138] ,
- [109, 122, 75]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 139] ,
- [115, 122, 75]
- ] ,
- [
- [48, 109, -40] ,
- [110, 110, 140] ,
- [111, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 95, -29] ,
- [97, 111, 75] ,
- [112, 112, 141] ,
- [113, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 104, 75] ,
- [105, 105, 142] ,
- [106, 115, 75] ,
- [116, 116, 143] ,
- [117, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 144] ,
- [98, 114, 75] ,
- [115, 115, 145] ,
- [116, 122, 75]
- ] ,
- [
- [48, 97, -29] ,
- [98, 98, 146] ,
- [99, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 147] ,
- [117, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 118, 75] ,
- [119, 119, 148] ,
- [120, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 149] ,
- [117, 122, 75]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 150] ,
- [109, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 98, 75] ,
- [99, 99, 151] ,
- [100, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 98, -101] ,
- [99, 99, 152] ,
- [100, 122, 75]
- ] ,
- [
- [48, 104, -94] ,
- [105, 105, 153] ,
- [106, 110, 75] ,
- [111, 111, 154] ,
- [112, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 155] ,
- [98, 99, 75] ,
- [100, 100, 156] ,
- [101, 115, 75] ,
- [116, 116, 157] ,
- [117, 122, 75]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 158] ,
- [109, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 159] ,
- [102, 122, 75]
- ] ,
- [
- [48, 111, -93] ,
- [112, 112, 160] ,
- [113, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 161] ,
- [102, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 116, 75] ,
- [117, 117, 162] ,
- [118, 122, 75]
- ] ,
- [
- [48, 111, -93] ,
- [112, 112, 163] ,
- [113, 122, 75]
- ] ,
- [
- [48, 104, -94] ,
- [105, 105, 164] ,
- [106, 122, 75]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 165] ,
- [115, 122, 75]
- ] ,
- [
- [48, 104, -94] ,
- [105, 105, 166] ,
- [106, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 167] ,
- [117, 122, 75]
- ] ,
- [
- [48, 104, -94] ,
- [105, 105, 168] ,
- [106, 122, 75]
- ] ,
- [
- [0, 255, -48]
- ] ,
- nil_array ,
- [
- [0, 9, 169] ,
- [11, 12, 169] ,
- [14, 255, 169]
- ] ,
- nil_array ,
- [
- [0, 255, -8]
- ] ,
- nil_array ,
- nil_array ,
- nil_array ,
- [
- [48, 122, -73]
- ] ,
- [
- [48, 122, -73]
- ] ,
- [
- [48, 122, -73]
- ] ,
- [
- [48, 122, -73]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 170] ,
- [115, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 171] ,
- [117, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 172] ,
- [102, 122, 75]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 173] ,
- [115, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 174] ,
- [98, 122, 75]
- ] ,
- [
- [48, 114, -80] ,
- [115, 115, 175] ,
- [116, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 176] ,
- [117, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 177] ,
- [102, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 178] ,
- [102, 122, 75]
- ] ,
- [
- [48, 114, -80] ,
- [115, 115, 179] ,
- [116, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 110, -32] ,
- [111, 111, 180] ,
- [112, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 181] ,
- [117, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 182] ,
- [102, 113, 75] ,
- [114, 114, 183] ,
- [115, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 184] ,
- [102, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 185] ,
- [102, 122, 75]
- ] ,
- [
- [48, 103, -44] ,
- [104, 104, 186] ,
- [105, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 187] ,
- [109, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 188] ,
- [102, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 106, 75] ,
- [107, 107, 189] ,
- [108, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 117, 75] ,
- [118, 118, 190] ,
- [119, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 191] ,
- [117, 122, 75]
- ] ,
- [
- [48, 99, -79] ,
- [100, 100, 192] ,
- [101, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 193] ,
- [102, 122, 75]
- ] ,
- [
- [48, 116, -110] ,
- [117, 117, 194] ,
- [118, 122, 75]
- ] ,
- [
- [48, 101, -36] ,
- [102, 102, 195] ,
- [103, 122, 75]
- ] ,
- [
- [48, 98, -101] ,
- [99, 99, 196] ,
- [100, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 197] ,
- [102, 122, 75]
- ] ,
- [
- [48, 109, -40] ,
- [110, 110, 198] ,
- [111, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 199] ,
- [102, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 200] ,
- [102, 122, 75]
- ] ,
- [
- [48, 117, -155] ,
- [118, 118, 201] ,
- [119, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 202] ,
- [109, 122, 75]
- ] ,
- [
- [48, 103, -44] ,
- [104, 104, 203] ,
- [105, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 204] ,
- [117, 122, 75]
- ] ,
- [
- [0, 255, -48]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 205] ,
- [117, 122, 75]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 206] ,
- [115, 122, 75]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 207] ,
- [115, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 106, -154] ,
- [107, 107, 208] ,
- [108, 122, 75]
- ] ,
- [
- [48, 114, -80] ,
- [115, 115, 209] ,
- [116, 122, 75]
- ] ,
- [
- [48, 104, -94] ,
- [105, 105, 210] ,
- [106, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 211] ,
- [115, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 212] ,
- [102, 122, 75]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 213] ,
- [115, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 214] ,
- [115, 122, 75]
- ] ,
- [
- [48, 116, -110] ,
- [117, 117, 215] ,
- [118, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 216] ,
- [117, 122, 75]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 217] ,
- [109, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 218] ,
- [98, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 219] ,
- [98, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 220] ,
- [98, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 221] ,
- [102, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 222] ,
- [98, 122, 75]
- ] ,
- [
- [48, 101, -36] ,
- [102, 102, 223] ,
- [103, 122, 75]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 224] ,
- [115, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 104, -94] ,
- [105, 105, 225] ,
- [106, 122, 75]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 226] ,
- [115, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 227] ,
- [102, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 228] ,
- [102, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 229] ,
- [98, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 230] ,
- [98, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 231] ,
- [117, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 109, -40] ,
- [110, 110, 232] ,
- [111, 122, 75]
- ] ,
- [
- [48, 109, -40] ,
- [110, 110, 233] ,
- [111, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 234] ,
- [117, 122, 75]
- ] ,
- [
- [48, 101, -36] ,
- [102, 102, 235] ,
- [103, 109, 75] ,
- [110, 110, 236] ,
- [111, 122, 75]
- ] ,
- [
- [48, 99, -79] ,
- [100, 100, 237] ,
- [101, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 97, -29] ,
- [98, 98, 238] ,
- [99, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 102, 75] ,
- [103, 103, 239] ,
- [104, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 240] ,
- [117, 122, 75]
- ] ,
- [
- [48, 98, -101] ,
- [99, 99, 241] ,
- [100, 122, 75]
- ] ,
- [
- [48, 97, -29] ,
- [98, 98, 242] ,
- [99, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 109, -40] ,
- [110, 110, 243] ,
- [111, 122, 75]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 244] ,
- [98, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 113, -30] ,
- [114, 114, 245] ,
- [115, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 97, -29] ,
- [98, 98, 246] ,
- [99, 122, 75]
- ] ,
- [
- [48, 98, -101] ,
- [99, 99, 247] ,
- [100, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 116, -110] ,
- [117, 117, 248] ,
- [118, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 249] ,
- [98, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 250] ,
- [102, 122, 75]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 251] ,
- [109, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 252] ,
- [102, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 253] ,
- [102, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 254] ,
- [117, 122, 75]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 255] ,
- [109, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 256] ,
- [109, 122, 75]
- ] ,
- [
- [48, 114, -80] ,
- [115, 115, 257] ,
- [116, 122, 75]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 258] ,
- [109, 122, 75]
- ] ,
- [
- [48, 115, -81] ,
- [116, 116, 259] ,
- [117, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 260] ,
- [102, 122, 75]
- ] ,
- [
- [48, 98, -101] ,
- [99, 99, 261] ,
- [100, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 262] ,
- [102, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 263] ,
- [102, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 264] ,
- [102, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 95, -29] ,
- [97, 97, 265] ,
- [98, 122, 75]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 266] ,
- [102, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 100, -38] ,
- [101, 101, 267] ,
- [102, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 99, -79] ,
- [100, 100, 268] ,
- [101, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 107, -31] ,
- [108, 108, 269] ,
- [109, 122, 75]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ] ,
- [
- [48, 122, -35]
- ]
- ]
- ]
- end
-
- private fun nil_array: Array[Array[Int]]
- do
- return once new Array[Array[Int]]
- end
-
- var _accept_table: Array[Array[Int]]
- private fun build_accept_table do
- _accept_table = once [
- [
- -1 , 0 , 1 , 1 , 0 , -1 , -1 , -1 , 70 , -1 , 53 , 54 , 68 , 66 , 57 , 67 , 65 , 69 , 81 , 58 , 73 , 60 , 75 , 78 , 55 , 56 , -1 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , -1 , 1 , 72 , -1 , 84 , -1 , 85 , -1 , 2 , 2 , -1 , 83 , 61 , 62 , 64 , 82 , -1 , 59 , 74 , 71 , 76 , 78 , 78 , 78 , 78 , 80 , 79 , 79 , 79 , 79 , 79 , 79 , 48 , 79 , 79 , 79 , 79 , 17 , 79 , 79 , 79 , 79 , 79 , 79 , 26 , 79 , 31 , 16 , 79 , 79 , 79 , 79 , 79 , 79 , 33 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , -1 , 87 , -1 , 86 , -1 , 2 , 63 , 77 , 80 , 80 , 80 , 80 , 79 , 79 , 32 , 79 , 79 , 79 , 79 , 79 , 79 , 10 , 79 , 79 , 30 , 11 , 79 , 79 , 79 , 41 , 79 , 79 , 79 , 40 , 34 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 79 , 20 , 79 , 79 , 79 , -1 , 79 , 79 , 79 , 13 , 79 , 79 , 79 , 28 , 79 , 79 , 79 , 14 , 79 , 79 , 79 , 79 , 11 , 47 , 42 , 79 , 79 , 79 , 79 , 79 , 79 , 44 , 79 , 79 , 27 , 45 , 12 , 79 , 79 , 49 , 79 , 38 , 79 , 79 , 37 , 5 , 79 , 79 , 46 , 79 , 79 , 79 , 51 , 52 , 79 , 79 , 79 , 79 , 79 , 15 , 79 , 79 , 43 , 79 , 29 , 79 , 79 , 39 , 79 , 22 , 4 , 79 , 21 , 79 , 79 , 79 , 79 , 79 , 79 , 35 , 79 , 79 , 79 , 79 , 79 , 79 , 25 , 79 , 3 , 24 , 79 , 79 , 9 , 79 , 79 , 6 , 36 , 79 , 50 , 79 , 18 , 79 , 19 , 7 , 23 , 8
-
- ]
- ]
end
end