parser: regenerate with safe call `x?.foo`
[nit.git] / src / parser / lexer.nit
index 158a76f..efad425 100644 (file)
@@ -1,18 +1,10 @@
 # Lexer and its tokens.
 # This file was generated by SableCC (http://www.sablecc.org/).
-package lexer
+module lexer is generated, no_warning("missing-doc")
 
 intrude import parser_nodes
-
-redef class Token
-    readable var _text: String
-
-    fun parser_index: Int is abstract
-
-    redef fun to_s: String do
-        return "'{_text}'"
-    end
-end
+intrude import lexer_work
+private import tables
 
 redef class TEol
     redef fun parser_index: Int
@@ -20,9 +12,8 @@ redef class TEol
        return 0
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
@@ -33,9 +24,8 @@ redef class TComment
        return 1
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
@@ -48,12 +38,11 @@ redef class TKwpackage
 
     init init_tk(loc: Location)
     do
-        _text = once "package"
                _location = loc
     end
 end
 
-redef class TKwimport
+redef class TKwmodule
     redef fun parser_index: Int
     do
        return 3
@@ -61,12 +50,11 @@ redef class TKwimport
 
     init init_tk(loc: Location)
     do
-        _text = once "import"
                _location = loc
     end
 end
 
-redef class TKwclass
+redef class TKwimport
     redef fun parser_index: Int
     do
        return 4
@@ -74,12 +62,11 @@ redef class TKwclass
 
     init init_tk(loc: Location)
     do
-        _text = once "class"
                _location = loc
     end
 end
 
-redef class TKwabstract
+redef class TKwclass
     redef fun parser_index: Int
     do
        return 5
@@ -87,12 +74,11 @@ redef class TKwabstract
 
     init init_tk(loc: Location)
     do
-        _text = once "abstract"
                _location = loc
     end
 end
 
-redef class TKwinterface
+redef class TKwabstract
     redef fun parser_index: Int
     do
        return 6
@@ -100,12 +86,11 @@ redef class TKwinterface
 
     init init_tk(loc: Location)
     do
-        _text = once "interface"
                _location = loc
     end
 end
 
-redef class TKwuniversal
+redef class TKwinterface
     redef fun parser_index: Int
     do
        return 7
@@ -113,12 +98,11 @@ redef class TKwuniversal
 
     init init_tk(loc: Location)
     do
-        _text = once "universal"
                _location = loc
     end
 end
 
-redef class TKwspecial
+redef class TKwenum
     redef fun parser_index: Int
     do
        return 8
@@ -126,12 +110,11 @@ redef class TKwspecial
 
     init init_tk(loc: Location)
     do
-        _text = once "special"
                _location = loc
     end
 end
 
-redef class TKwend
+redef class TKwsubset
     redef fun parser_index: Int
     do
        return 9
@@ -139,12 +122,11 @@ redef class TKwend
 
     init init_tk(loc: Location)
     do
-        _text = once "end"
                _location = loc
     end
 end
 
-redef class TKwmeth
+redef class TKwend
     redef fun parser_index: Int
     do
        return 10
@@ -152,12 +134,11 @@ redef class TKwmeth
 
     init init_tk(loc: Location)
     do
-        _text = once "fun"
                _location = loc
     end
 end
 
-redef class TKwtype
+redef class TKwmeth
     redef fun parser_index: Int
     do
        return 11
@@ -165,12 +146,11 @@ redef class TKwtype
 
     init init_tk(loc: Location)
     do
-        _text = once "type"
                _location = loc
     end
 end
 
-redef class TKwinit
+redef class TKwtype
     redef fun parser_index: Int
     do
        return 12
@@ -178,12 +158,11 @@ redef class TKwinit
 
     init init_tk(loc: Location)
     do
-        _text = once "init"
                _location = loc
     end
 end
 
-redef class TKwredef
+redef class TKwinit
     redef fun parser_index: Int
     do
        return 13
@@ -191,12 +170,11 @@ redef class TKwredef
 
     init init_tk(loc: Location)
     do
-        _text = once "redef"
                _location = loc
     end
 end
 
-redef class TKwis
+redef class TKwredef
     redef fun parser_index: Int
     do
        return 14
@@ -204,12 +182,11 @@ redef class TKwis
 
     init init_tk(loc: Location)
     do
-        _text = once "is"
                _location = loc
     end
 end
 
-redef class TKwdo
+redef class TKwis
     redef fun parser_index: Int
     do
        return 15
@@ -217,12 +194,11 @@ redef class TKwdo
 
     init init_tk(loc: Location)
     do
-        _text = once "do"
                _location = loc
     end
 end
 
-redef class TKwreadable
+redef class TKwdo
     redef fun parser_index: Int
     do
        return 16
@@ -230,12 +206,11 @@ redef class TKwreadable
 
     init init_tk(loc: Location)
     do
-        _text = once "readable"
                _location = loc
     end
 end
 
-redef class TKwwritable
+redef class TKwvar
     redef fun parser_index: Int
     do
        return 17
@@ -243,12 +218,11 @@ redef class TKwwritable
 
     init init_tk(loc: Location)
     do
-        _text = once "writable"
                _location = loc
     end
 end
 
-redef class TKwvar
+redef class TKwextern
     redef fun parser_index: Int
     do
        return 18
@@ -256,12 +230,11 @@ redef class TKwvar
 
     init init_tk(loc: Location)
     do
-        _text = once "var"
                _location = loc
     end
 end
 
-redef class TKwintern
+redef class TKwpublic
     redef fun parser_index: Int
     do
        return 19
@@ -269,12 +242,11 @@ redef class TKwintern
 
     init init_tk(loc: Location)
     do
-        _text = once "intern"
                _location = loc
     end
 end
 
-redef class TKwextern
+redef class TKwprotected
     redef fun parser_index: Int
     do
        return 20
@@ -282,12 +254,11 @@ redef class TKwextern
 
     init init_tk(loc: Location)
     do
-        _text = once "extern"
                _location = loc
     end
 end
 
-redef class TKwprotected
+redef class TKwprivate
     redef fun parser_index: Int
     do
        return 21
@@ -295,12 +266,11 @@ redef class TKwprotected
 
     init init_tk(loc: Location)
     do
-        _text = once "protected"
                _location = loc
     end
 end
 
-redef class TKwprivate
+redef class TKwintrude
     redef fun parser_index: Int
     do
        return 22
@@ -308,12 +278,11 @@ redef class TKwprivate
 
     init init_tk(loc: Location)
     do
-        _text = once "private"
                _location = loc
     end
 end
 
-redef class TKwintrude
+redef class TKwif
     redef fun parser_index: Int
     do
        return 23
@@ -321,12 +290,11 @@ redef class TKwintrude
 
     init init_tk(loc: Location)
     do
-        _text = once "intrude"
                _location = loc
     end
 end
 
-redef class TKwif
+redef class TKwthen
     redef fun parser_index: Int
     do
        return 24
@@ -334,12 +302,11 @@ redef class TKwif
 
     init init_tk(loc: Location)
     do
-        _text = once "if"
                _location = loc
     end
 end
 
-redef class TKwthen
+redef class TKwelse
     redef fun parser_index: Int
     do
        return 25
@@ -347,12 +314,11 @@ redef class TKwthen
 
     init init_tk(loc: Location)
     do
-        _text = once "then"
                _location = loc
     end
 end
 
-redef class TKwelse
+redef class TKwwhile
     redef fun parser_index: Int
     do
        return 26
@@ -360,12 +326,11 @@ redef class TKwelse
 
     init init_tk(loc: Location)
     do
-        _text = once "else"
                _location = loc
     end
 end
 
-redef class TKwwhile
+redef class TKwloop
     redef fun parser_index: Int
     do
        return 27
@@ -373,12 +338,11 @@ redef class TKwwhile
 
     init init_tk(loc: Location)
     do
-        _text = once "while"
                _location = loc
     end
 end
 
-redef class TKwloop
+redef class TKwfor
     redef fun parser_index: Int
     do
        return 28
@@ -386,12 +350,11 @@ redef class TKwloop
 
     init init_tk(loc: Location)
     do
-        _text = once "loop"
                _location = loc
     end
 end
 
-redef class TKwfor
+redef class TKwin
     redef fun parser_index: Int
     do
        return 29
@@ -399,12 +362,11 @@ redef class TKwfor
 
     init init_tk(loc: Location)
     do
-        _text = once "for"
                _location = loc
     end
 end
 
-redef class TKwin
+redef class TKwand
     redef fun parser_index: Int
     do
        return 30
@@ -412,12 +374,11 @@ redef class TKwin
 
     init init_tk(loc: Location)
     do
-        _text = once "in"
                _location = loc
     end
 end
 
-redef class TKwand
+redef class TKwor
     redef fun parser_index: Int
     do
        return 31
@@ -425,12 +386,11 @@ redef class TKwand
 
     init init_tk(loc: Location)
     do
-        _text = once "and"
                _location = loc
     end
 end
 
-redef class TKwor
+redef class TKwnot
     redef fun parser_index: Int
     do
        return 32
@@ -438,12 +398,11 @@ redef class TKwor
 
     init init_tk(loc: Location)
     do
-        _text = once "or"
                _location = loc
     end
 end
 
-redef class TKwnot
+redef class TKwimplies
     redef fun parser_index: Int
     do
        return 33
@@ -451,7 +410,6 @@ redef class TKwnot
 
     init init_tk(loc: Location)
     do
-        _text = once "not"
                _location = loc
     end
 end
@@ -464,7 +422,6 @@ redef class TKwreturn
 
     init init_tk(loc: Location)
     do
-        _text = once "return"
                _location = loc
     end
 end
@@ -477,7 +434,6 @@ redef class TKwcontinue
 
     init init_tk(loc: Location)
     do
-        _text = once "continue"
                _location = loc
     end
 end
@@ -490,7 +446,6 @@ redef class TKwbreak
 
     init init_tk(loc: Location)
     do
-        _text = once "break"
                _location = loc
     end
 end
@@ -503,7 +458,6 @@ redef class TKwabort
 
     init init_tk(loc: Location)
     do
-        _text = once "abort"
                _location = loc
     end
 end
@@ -516,7 +470,6 @@ redef class TKwassert
 
     init init_tk(loc: Location)
     do
-        _text = once "assert"
                _location = loc
     end
 end
@@ -529,7 +482,6 @@ redef class TKwnew
 
     init init_tk(loc: Location)
     do
-        _text = once "new"
                _location = loc
     end
 end
@@ -542,7 +494,6 @@ redef class TKwisa
 
     init init_tk(loc: Location)
     do
-        _text = once "isa"
                _location = loc
     end
 end
@@ -555,7 +506,6 @@ redef class TKwonce
 
     init init_tk(loc: Location)
     do
-        _text = once "once"
                _location = loc
     end
 end
@@ -568,7 +518,6 @@ redef class TKwsuper
 
     init init_tk(loc: Location)
     do
-        _text = once "super"
                _location = loc
     end
 end
@@ -581,7 +530,6 @@ redef class TKwself
 
     init init_tk(loc: Location)
     do
-        _text = once "self"
                _location = loc
     end
 end
@@ -594,7 +542,6 @@ redef class TKwtrue
 
     init init_tk(loc: Location)
     do
-        _text = once "true"
                _location = loc
     end
 end
@@ -607,7 +554,6 @@ redef class TKwfalse
 
     init init_tk(loc: Location)
     do
-        _text = once "false"
                _location = loc
     end
 end
@@ -620,7 +566,6 @@ redef class TKwnull
 
     init init_tk(loc: Location)
     do
-        _text = once "null"
                _location = loc
     end
 end
@@ -633,7 +578,6 @@ redef class TKwas
 
     init init_tk(loc: Location)
     do
-        _text = once "as"
                _location = loc
     end
 end
@@ -646,7 +590,6 @@ redef class TKwnullable
 
     init init_tk(loc: Location)
     do
-        _text = once "nullable"
                _location = loc
     end
 end
@@ -659,7 +602,6 @@ redef class TKwisset
 
     init init_tk(loc: Location)
     do
-        _text = once "isset"
                _location = loc
     end
 end
@@ -672,12 +614,11 @@ redef class TKwlabel
 
     init init_tk(loc: Location)
     do
-        _text = once "label"
                _location = loc
     end
 end
 
-redef class TOpar
+redef class TKwwith
     redef fun parser_index: Int
     do
        return 51
@@ -685,12 +626,11 @@ redef class TOpar
 
     init init_tk(loc: Location)
     do
-        _text = once "("
                _location = loc
     end
 end
 
-redef class TCpar
+redef class TKwdebug
     redef fun parser_index: Int
     do
        return 52
@@ -698,12 +638,11 @@ redef class TCpar
 
     init init_tk(loc: Location)
     do
-        _text = once ")"
                _location = loc
     end
 end
 
-redef class TObra
+redef class TKwyield
     redef fun parser_index: Int
     do
        return 53
@@ -711,12 +650,11 @@ redef class TObra
 
     init init_tk(loc: Location)
     do
-        _text = once "["
                _location = loc
     end
 end
 
-redef class TCbra
+redef class TKwcatch
     redef fun parser_index: Int
     do
        return 54
@@ -724,12 +662,11 @@ redef class TCbra
 
     init init_tk(loc: Location)
     do
-        _text = once "]"
                _location = loc
     end
 end
 
-redef class TComma
+redef class TOpar
     redef fun parser_index: Int
     do
        return 55
@@ -737,12 +674,11 @@ redef class TComma
 
     init init_tk(loc: Location)
     do
-        _text = once ","
                _location = loc
     end
 end
 
-redef class TColumn
+redef class TCpar
     redef fun parser_index: Int
     do
        return 56
@@ -750,12 +686,11 @@ redef class TColumn
 
     init init_tk(loc: Location)
     do
-        _text = once ":"
                _location = loc
     end
 end
 
-redef class TQuad
+redef class TObra
     redef fun parser_index: Int
     do
        return 57
@@ -763,12 +698,11 @@ redef class TQuad
 
     init init_tk(loc: Location)
     do
-        _text = once "::"
                _location = loc
     end
 end
 
-redef class TAssign
+redef class TCbra
     redef fun parser_index: Int
     do
        return 58
@@ -776,12 +710,11 @@ redef class TAssign
 
     init init_tk(loc: Location)
     do
-        _text = once "="
                _location = loc
     end
 end
 
-redef class TPluseq
+redef class TComma
     redef fun parser_index: Int
     do
        return 59
@@ -789,12 +722,11 @@ redef class TPluseq
 
     init init_tk(loc: Location)
     do
-        _text = once "+="
                _location = loc
     end
 end
 
-redef class TMinuseq
+redef class TColumn
     redef fun parser_index: Int
     do
        return 60
@@ -802,12 +734,11 @@ redef class TMinuseq
 
     init init_tk(loc: Location)
     do
-        _text = once "-="
                _location = loc
     end
 end
 
-redef class TDotdotdot
+redef class TQuad
     redef fun parser_index: Int
     do
        return 61
@@ -815,12 +746,11 @@ redef class TDotdotdot
 
     init init_tk(loc: Location)
     do
-        _text = once "..."
                _location = loc
     end
 end
 
-redef class TDotdot
+redef class TAssign
     redef fun parser_index: Int
     do
        return 62
@@ -828,12 +758,11 @@ redef class TDotdot
 
     init init_tk(loc: Location)
     do
-        _text = once ".."
                _location = loc
     end
 end
 
-redef class TDot
+redef class TPluseq
     redef fun parser_index: Int
     do
        return 63
@@ -841,12 +770,11 @@ redef class TDot
 
     init init_tk(loc: Location)
     do
-        _text = once "."
                _location = loc
     end
 end
 
-redef class TPlus
+redef class TMinuseq
     redef fun parser_index: Int
     do
        return 64
@@ -854,12 +782,11 @@ redef class TPlus
 
     init init_tk(loc: Location)
     do
-        _text = once "+"
                _location = loc
     end
 end
 
-redef class TMinus
+redef class TStareq
     redef fun parser_index: Int
     do
        return 65
@@ -867,12 +794,11 @@ redef class TMinus
 
     init init_tk(loc: Location)
     do
-        _text = once "-"
                _location = loc
     end
 end
 
-redef class TStar
+redef class TSlasheq
     redef fun parser_index: Int
     do
        return 66
@@ -880,12 +806,11 @@ redef class TStar
 
     init init_tk(loc: Location)
     do
-        _text = once "*"
                _location = loc
     end
 end
 
-redef class TSlash
+redef class TPercenteq
     redef fun parser_index: Int
     do
        return 67
@@ -893,12 +818,11 @@ redef class TSlash
 
     init init_tk(loc: Location)
     do
-        _text = once "/"
                _location = loc
     end
 end
 
-redef class TPercent
+redef class TStarstareq
     redef fun parser_index: Int
     do
        return 68
@@ -906,12 +830,11 @@ redef class TPercent
 
     init init_tk(loc: Location)
     do
-        _text = once "%"
                _location = loc
     end
 end
 
-redef class TEq
+redef class TPipeeq
     redef fun parser_index: Int
     do
        return 69
@@ -919,12 +842,11 @@ redef class TEq
 
     init init_tk(loc: Location)
     do
-        _text = once "=="
                _location = loc
     end
 end
 
-redef class TNe
+redef class TCareteq
     redef fun parser_index: Int
     do
        return 70
@@ -932,12 +854,11 @@ redef class TNe
 
     init init_tk(loc: Location)
     do
-        _text = once "!="
                _location = loc
     end
 end
 
-redef class TLt
+redef class TAmpeq
     redef fun parser_index: Int
     do
        return 71
@@ -945,12 +866,11 @@ redef class TLt
 
     init init_tk(loc: Location)
     do
-        _text = once "<"
                _location = loc
     end
 end
 
-redef class TLe
+redef class TLleq
     redef fun parser_index: Int
     do
        return 72
@@ -958,12 +878,11 @@ redef class TLe
 
     init init_tk(loc: Location)
     do
-        _text = once "<="
                _location = loc
     end
 end
 
-redef class TGt
+redef class TGgeq
     redef fun parser_index: Int
     do
        return 73
@@ -971,12 +890,11 @@ redef class TGt
 
     init init_tk(loc: Location)
     do
-        _text = once ">"
                _location = loc
     end
 end
 
-redef class TGe
+redef class TDotdotdot
     redef fun parser_index: Int
     do
        return 74
@@ -984,12 +902,11 @@ redef class TGe
 
     init init_tk(loc: Location)
     do
-        _text = once ">="
                _location = loc
     end
 end
 
-redef class TStarship
+redef class TDotdot
     redef fun parser_index: Int
     do
        return 75
@@ -997,12 +914,11 @@ redef class TStarship
 
     init init_tk(loc: Location)
     do
-        _text = once "<=>"
                _location = loc
     end
 end
 
-redef class TBang
+redef class TDot
     redef fun parser_index: Int
     do
        return 76
@@ -1010,2317 +926,823 @@ redef class TBang
 
     init init_tk(loc: Location)
     do
-        _text = once "!"
                _location = loc
     end
 end
 
-redef class TClassid
+redef class TPlus
     redef fun parser_index: Int
     do
        return 77
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-redef class TId
+redef class TMinus
     redef fun parser_index: Int
     do
        return 78
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-redef class TAttrid
+redef class TStar
     redef fun parser_index: Int
     do
        return 79
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-redef class TNumber
+redef class TStarstar
     redef fun parser_index: Int
     do
        return 80
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-redef class TFloat
+redef class TSlash
     redef fun parser_index: Int
     do
        return 81
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-redef class TChar
+redef class TPercent
     redef fun parser_index: Int
     do
        return 82
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-redef class TString
+redef class TPipe
     redef fun parser_index: Int
     do
        return 83
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-redef class TStartString
+redef class TCaret
     redef fun parser_index: Int
     do
        return 84
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-redef class TMidString
+redef class TAmp
     redef fun parser_index: Int
     do
        return 85
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-redef class TEndString
+redef class TTilde
     redef fun parser_index: Int
     do
        return 86
     end
 
-    init init_tk(text: String, loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = text
                _location = loc
     end
 end
 
-
-redef class EOF
+redef class TEq
     redef fun parser_index: Int
     do
        return 87
     end
 
-    init(loc: Location)
+    init init_tk(loc: Location)
     do
-        _text = ""
                _location = loc
     end
 end
 
-redef class AError
-    readable var _message: String
+redef class TNe
+    redef fun parser_index: Int
+    do
+       return 88
+    end
 
-    init init_error(message: String, loc: Location)
+    init init_tk(loc: Location)
     do
-               init(loc)
-               _message = message
+               _location = loc
     end
 end
 
+redef class TLt
+    redef fun parser_index: Int
+    do
+       return 89
+    end
 
-# The lexer extract NIT tokens from an input stream.
-# It is better user with the Parser
-class Lexer
-       # Last peeked token
-       var _token: nullable Token
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       # Lexer current state
-       var _state: Int = 0
+redef class TLe
+    redef fun parser_index: Int
+    do
+       return 90
+    end
 
-       # Name of the stream (as given to tokens)
-       readable var _filename: String
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       # Input stream where character are read
-       var _stream: IStream
+redef class TLl
+    redef fun parser_index: Int
+    do
+       return 91
+    end
 
-       # Pushback buffer to store unread character
-       var _stream_buf: Buffer
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       # Number of character stored in the pushback buffer
-       var _stream_pos: Int
+redef class TGt
+    redef fun parser_index: Int
+    do
+       return 92
+    end
 
-       # Current line number in the input stream
-       var _line: Int = 0
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       # Current column in the input stream
-       var _pos: Int = 0
+redef class TGe
+    redef fun parser_index: Int
+    do
+       return 93
+    end
 
-       # Was the last character a cariage-return?
-       var _cr: Bool = false
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       # If the end of stream?
-       var _eof: Bool = false
+redef class TGg
+    redef fun parser_index: Int
+    do
+       return 94
+    end
 
-       # Current working text read from the input stream
-       var _text: Buffer
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       # Constante state values
-       private fun state_initial: Int do return 0 end
+redef class TStarship
+    redef fun parser_index: Int
+    do
+       return 95
+    end
 
-       # Create a new lexer for a stream (and a name)
-       init(stream: IStream, fname: String)
-       do
-               _filename = fname
-               _text = new Buffer
-               _stream = stream
-               _stream_pos = -1
-               _stream_buf = new Buffer
-               build_goto_table
-               build_accept_table
-       end
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       # Give the next token (but do not consume it)
-       fun peek: Token
-       do
-               while _token == null do
-                       _token = get_token
-               end
-               return _token.as(not null)
-       end
+redef class TBang
+    redef fun parser_index: Int
+    do
+       return 96
+    end
 
-       # Give and consume the next token
-       fun next: Token
-       do
-               var result = _token
-               while result == null do
-                       result = get_token
-               end
-               _token = null
-               return result.as(not null)
-       end
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       # Get a token, or null if it is discarded
-       private fun get_token: nullable Token
-       do
-               var dfa_state = 0
-
-               var start_pos = _pos
-               var start_line = _line
-
-               var accept_state = -1
-               var accept_token = -1
-               var accept_length = -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
-
-               loop
-                       var c = get_char
-
-                       if c != -1 then
-                               var cr = _cr
-                               var line = _line
-                               var pos = _pos
-                               if c == 10 then
-                                       if cr then
-                                               cr = false
-                                       else
-                                               line = line + 1
-                                               pos = 0
-                                       end
-                               else if c == 13 then
-                                       line = line + 1
-                                       pos = 0
-                                       cr = true
-                               else
-                                       pos = pos + 1
-                                       cr = false
-                               end
-
-                               text.add(c.ascii)
-
-                               loop
-                                       var old_state = dfa_state
-                                       if dfa_state < -1 then
-                                               old_state = -2 - dfa_state
-                                       end
-
-                                       dfa_state = -1
-
-                                       var tmp0 = goto_table[old_state]
-                                       var low = 0
-                                       var high = tmp0.length - 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
-
-                                                       if c < tmp2[0] then
-                                                               high = middle - 1
-                                                       else if c > tmp2[1] then
-                                                               low = middle + 1
-                                                       else
-                                                               dfa_state = tmp2[2]
-                                                               break
-                                                       end
-                                               end
-                                       end
-                                       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
-                                       accept_state = dfa_state
-                                       accept_token = accept[dfa_state]
-                                       accept_length = text.length
-                                       accept_pos = _pos
-                                       accept_line = _line
-                               end
-                       else
-                               if accept_state != -1 then
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       end
-                                       if accept_token == 11 then
-                                               var location = new Location(_filename, start_line + 1, accept_line + 1, start_pos + 1, accept_pos)
-                                               var token = new TKwmeth.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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
-                                       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 TKwinit.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwredef.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwis.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwdo.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwreadable.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwwritable.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwvar.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwintern.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwextern.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwprotected.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwprivate.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwintrude.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwif.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwthen.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwelse.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwwhile.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwloop.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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 TKwnullable.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwisset.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TKwlabel.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TOpar.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TCpar.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TObra.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TCbra.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TComma.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TColumn.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TQuad.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TAssign.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TPluseq.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TMinuseq.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TDotdotdot.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TDotdot.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TDot.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TPlus.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TMinus.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TStar.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TSlash.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TPercent.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TEq.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TNe.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TLt.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TLe.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TGt.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TGe.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TStarship.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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 TBang.init_tk(location)
-                                               push_back(accept_length)
-                                               _pos = accept_pos
-                                               _line = accept_line
-                                               return token
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       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
-                                       end
-                               else
-                                       var location = new Location(_filename, start_line + 1, start_line + 1, start_pos + 1, start_pos + 1)
-                                       if text.length > 0 then
-                                               var token = new AError.init_error("Syntax error: unknown token {text}.", location)
-                                               return token
-                                       else
-                                               var token = new EOF(location)
-                                               return token
-                                       end
-                               end
-                       end
-                       if false then break # FIXME remove once unreach loop exits are in c_src
-               end
-               return null # FIXME remove once unreach loop exits are in c_src
-       end
+redef class TQuest
+    redef fun parser_index: Int
+    do
+       return 97
+    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
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-               var result: Int
+redef class TAt
+    redef fun parser_index: Int
+    do
+       return 98
+    end
 
-               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
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-               if result == -1 then
-                       _eof = true
-               end
+redef class TSemi
+    redef fun parser_index: Int
+    do
+       return 99
+    end
 
-               return result
-       end
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+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
+redef class TClassid
+    redef fun parser_index: Int
+    do
+       return 100
+    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, 33],
-                                       [110, 110, 36],
-                                       [111, 111, 37],
-                                       [112, 112, 38],
-                                       [113, 113, 33],
-                                       [114, 114, 39],
-                                       [115, 115, 40],
-                                       [116, 116, 41],
-                                       [117, 117, 42],
-                                       [118, 118, 43],
-                                       [119, 119, 44],
-                                       [120, 122, 33],
-                                       [125, 125, 45]
-                               ],
-                               [
-                                       [9, 9, 1],
-                                       [32, 32, 4]
-                               ],
-                               nil_array,
-                               [
-                                       [10, 10, 46]
-                               ],
-                               [
-                                       [9, 32, -3]
-                               ],
-                               [
-                                       [61, 61, 47]
-                               ],
-                               [
-                                       [0, 9, 48],
-                                       [11, 12, 48],
-                                       [14, 33, 48],
-                                       [34, 34, 49],
-                                       [35, 91, 48],
-                                       [92, 92, 50],
-                                       [93, 122, 48],
-                                       [123, 123, 51],
-                                       [124, 255, 48]
-                               ],
-                               [
-                                       [0, 9, 52],
-                                       [10, 10, 53],
-                                       [11, 12, 52],
-                                       [13, 13, 54],
-                                       [14, 255, 52]
-                               ],
-                               nil_array,
-                               [
-                                       [0, 9, 55],
-                                       [11, 12, 55],
-                                       [14, 38, 55],
-                                       [39, 39, 56],
-                                       [40, 255, 55]
-                               ],
-                               nil_array,
-                               nil_array,
-                               nil_array,
-                               [
-                                       [61, 61, 57]
-                               ],
-                               nil_array,
-                               [
-                                       [61, 61, 58]
-                               ],
-                               [
-                                       [46, 46, 59],
-                                       [48, 57, 60]
-                               ],
-                               nil_array,
-                               [
-                                       [46, 46, 61],
-                                       [48, 57, 18]
-                               ],
-                               [
-                                       [58, 58, 62]
-                               ],
-                               [
-                                       [61, 61, 63]
-                               ],
-                               [
-                                       [61, 61, 64]
-                               ],
-                               [
-                                       [61, 61, 65]
-                               ],
-                               [
-                                       [48, 57, 66],
-                                       [65, 90, 67],
-                                       [95, 95, 68],
-                                       [97, 122, 69]
-                               ],
-                               nil_array,
-                               nil_array,
-                               [
-                                       [97, 122, 70]
-                               ],
-                               [
-                                       [48, 57, 71],
-                                       [65, 90, 72],
-                                       [95, 95, 73],
-                                       [97, 97, 74],
-                                       [98, 98, 75],
-                                       [99, 109, 74],
-                                       [110, 110, 76],
-                                       [111, 114, 74],
-                                       [115, 115, 77],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 113, 74],
-                                       [114, 114, 78],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 107, 74],
-                                       [108, 108, 79],
-                                       [109, 110, 74],
-                                       [111, 111, 80],
-                                       [112, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 110, 74],
-                                       [111, 111, 81],
-                                       [112, 122, 74]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 82],
-                                       [109, 109, 74],
-                                       [110, 110, 83],
-                                       [111, 119, 74],
-                                       [120, 120, 84],
-                                       [121, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 85],
-                                       [98, 110, 74],
-                                       [111, 111, 86],
-                                       [112, 116, 74],
-                                       [117, 117, 87],
-                                       [118, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 101, 74],
-                                       [102, 102, 88],
-                                       [103, 108, 74],
-                                       [109, 109, 89],
-                                       [110, 110, 90],
-                                       [111, 114, 74],
-                                       [115, 115, 91],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 92],
-                                       [98, 110, 74],
-                                       [111, 111, 93],
-                                       [112, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 100, 74],
-                                       [101, 101, 94],
-                                       [102, 110, 74],
-                                       [111, 111, 95],
-                                       [112, 116, 74],
-                                       [117, 117, 96],
-                                       [118, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 109, 74],
-                                       [110, 110, 97],
-                                       [111, 113, 74],
-                                       [114, 114, 98],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 99],
-                                       [98, 113, 74],
-                                       [114, 114, 100],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 101],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 102],
-                                       [102, 111, 74],
-                                       [112, 112, 103],
-                                       [113, 116, 74],
-                                       [117, 117, 104],
-                                       [118, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 103, 74],
-                                       [104, 104, 105],
-                                       [105, 113, 74],
-                                       [114, 114, 106],
-                                       [115, 120, 74],
-                                       [121, 121, 107],
-                                       [122, 122, 74]
-                               ],
-                               [
-                                       [48, 109, -39],
-                                       [110, 110, 108],
-                                       [111, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 109],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 103, -43],
-                                       [104, 104, 110],
-                                       [105, 113, 74],
-                                       [114, 114, 111],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [0, 9, 112],
-                                       [11, 12, 112],
-                                       [14, 33, 112],
-                                       [34, 34, 113],
-                                       [35, 91, 112],
-                                       [92, 92, 114],
-                                       [93, 122, 112],
-                                       [123, 123, 115],
-                                       [124, 255, 112]
-                               ],
-                               nil_array,
-                               nil_array,
-                               [
-                                       [0, 255, -8]
-                               ],
-                               nil_array,
-                               [
-                                       [0, 9, 116],
-                                       [11, 12, 116],
-                                       [14, 255, 116]
-                               ],
-                               nil_array,
-                               [
-                                       [0, 255, -9]
-                               ],
-                               nil_array,
-                               [
-                                       [10, 10, 117]
-                               ],
-                               [
-                                       [0, 255, -11]
-                               ],
-                               nil_array,
-                               nil_array,
-                               nil_array,
-                               [
-                                       [46, 46, 118]
-                               ],
-                               [
-                                       [48, 57, 60]
-                               ],
-                               [
-                                       [48, 57, 60]
-                               ],
-                               nil_array,
-                               [
-                                       [62, 62, 119]
-                               ],
-                               nil_array,
-                               nil_array,
-                               [
-                                       [48, 122, -25]
-                               ],
-                               [
-                                       [48, 122, -25]
-                               ],
-                               [
-                                       [48, 122, -25]
-                               ],
-                               [
-                                       [48, 122, -25]
-                               ],
-                               [
-                                       [48, 57, 120],
-                                       [65, 90, 121],
-                                       [95, 95, 122],
-                                       [97, 122, 123]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 110, -32],
-                                       [111, 111, 124],
-                                       [112, 114, 74],
-                                       [115, 115, 125],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 99, 74],
-                                       [100, 100, 126],
-                                       [101, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 114, 74],
-                                       [115, 115, 127],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 128],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 129],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 109, -39],
-                                       [110, 110, 130],
-                                       [111, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 114, -79],
-                                       [115, 115, 131],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 99, -78],
-                                       [100, 100, 132],
-                                       [101, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 115, 74],
-                                       [116, 116, 133],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 134],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 135],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 109, -39],
-                                       [110, 110, 136],
-                                       [111, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 111, 74],
-                                       [112, 112, 137],
-                                       [113, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 104, 74],
-                                       [105, 105, 138],
-                                       [106, 115, 74],
-                                       [116, 116, 139],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 140],
-                                       [98, 114, 74],
-                                       [115, 115, 141],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 97, -29],
-                                       [98, 98, 142],
-                                       [99, 122, 74]
-                               ],
-                               [
-                                       [48, 110, -32],
-                                       [111, 111, 143],
-                                       [112, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 118, 74],
-                                       [119, 119, 144],
-                                       [120, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 145],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 146],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 98, 74],
-                                       [99, 99, 147],
-                                       [100, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 98, -99],
-                                       [99, 99, 148],
-                                       [100, 122, 74]
-                               ],
-                               [
-                                       [48, 104, -92],
-                                       [105, 105, 149],
-                                       [106, 110, 74],
-                                       [111, 111, 150],
-                                       [112, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 151],
-                                       [98, 99, 74],
-                                       [100, 100, 152],
-                                       [101, 115, 74],
-                                       [116, 116, 153],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 154],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 155],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 111, -91],
-                                       [112, 112, 156],
-                                       [113, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 157],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 116, 74],
-                                       [117, 117, 158],
-                                       [118, 122, 74]
-                               ],
-                               [
-                                       [48, 111, -91],
-                                       [112, 112, 159],
-                                       [113, 122, 74]
-                               ],
-                               [
-                                       [48, 104, -92],
-                                       [105, 105, 160],
-                                       [106, 122, 74]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 161],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 104, -92],
-                                       [105, 105, 162],
-                                       [106, 122, 74]
-                               ],
-                               [
-                                       [48, 104, -92],
-                                       [105, 105, 163],
-                                       [106, 122, 74]
-                               ],
-                               [
-                                       [0, 255, -47]
-                               ],
-                               nil_array,
-                               [
-                                       [0, 9, 164],
-                                       [11, 12, 164],
-                                       [14, 255, 164]
-                               ],
-                               nil_array,
-                               [
-                                       [0, 255, -8]
-                               ],
-                               nil_array,
-                               nil_array,
-                               nil_array,
-                               [
-                                       [48, 122, -72]
-                               ],
-                               [
-                                       [48, 122, -72]
-                               ],
-                               [
-                                       [48, 122, -72]
-                               ],
-                               [
-                                       [48, 122, -72]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 165],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 166],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 167],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 168],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 114, -79],
-                                       [115, 115, 169],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 170],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 171],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 172],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 114, -79],
-                                       [115, 115, 173],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 110, -32],
-                                       [111, 111, 174],
-                                       [112, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 175],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 176],
-                                       [102, 113, 74],
-                                       [114, 114, 177],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 178],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 179],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 111, -91],
-                                       [112, 112, 180],
-                                       [113, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 181],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 182],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 106, 74],
-                                       [107, 107, 183],
-                                       [108, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 117, 74],
-                                       [118, 118, 184],
-                                       [119, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 185],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 99, -78],
-                                       [100, 100, 186],
-                                       [101, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 187],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 116, -108],
-                                       [117, 117, 188],
-                                       [118, 122, 74]
-                               ],
-                               [
-                                       [48, 101, -36],
-                                       [102, 102, 189],
-                                       [103, 122, 74]
-                               ],
-                               [
-                                       [48, 98, -99],
-                                       [99, 99, 190],
-                                       [100, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 191],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 109, -39],
-                                       [110, 110, 192],
-                                       [111, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 193],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 194],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 117, -151],
-                                       [118, 118, 195],
-                                       [119, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 196],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 197],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [0, 255, -47]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 198],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 199],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 200],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 106, -150],
-                                       [107, 107, 201],
-                                       [108, 122, 74]
-                               ],
-                               [
-                                       [48, 114, -79],
-                                       [115, 115, 202],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 104, -92],
-                                       [105, 105, 203],
-                                       [106, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 204],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 205],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 206],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 207],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 116, -108],
-                                       [117, 117, 208],
-                                       [118, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 209],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 210],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 211],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 212],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 213],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 214],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 215],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 101, -36],
-                                       [102, 102, 216],
-                                       [103, 122, 74]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 217],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 104, -92],
-                                       [105, 105, 218],
-                                       [106, 122, 74]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 219],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 220],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 221],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 222],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 223],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 224],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 109, -39],
-                                       [110, 110, 225],
-                                       [111, 122, 74]
-                               ],
-                               [
-                                       [48, 109, -39],
-                                       [110, 110, 226],
-                                       [111, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 227],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 101, -36],
-                                       [102, 102, 228],
-                                       [103, 109, 74],
-                                       [110, 110, 229],
-                                       [111, 122, 74]
-                               ],
-                               [
-                                       [48, 99, -78],
-                                       [100, 100, 230],
-                                       [101, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 97, -29],
-                                       [98, 98, 231],
-                                       [99, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 102, 74],
-                                       [103, 103, 232],
-                                       [104, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 233],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 98, -99],
-                                       [99, 99, 234],
-                                       [100, 122, 74]
-                               ],
-                               [
-                                       [48, 97, -29],
-                                       [98, 98, 235],
-                                       [99, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 109, -39],
-                                       [110, 110, 236],
-                                       [111, 122, 74]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 237],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 113, -30],
-                                       [114, 114, 238],
-                                       [115, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 97, -29],
-                                       [98, 98, 239],
-                                       [99, 122, 74]
-                               ],
-                               [
-                                       [48, 98, -99],
-                                       [99, 99, 240],
-                                       [100, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 116, -108],
-                                       [117, 117, 241],
-                                       [118, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 242],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 243],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 244],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 245],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 246],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 247],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 248],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 249],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 114, -79],
-                                       [115, 115, 250],
-                                       [116, 122, 74]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 251],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 115, -86],
-                                       [116, 116, 252],
-                                       [117, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 253],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 98, -99],
-                                       [99, 99, 254],
-                                       [100, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 255],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 256],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 257],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 95, -29],
-                                       [97, 97, 258],
-                                       [98, 122, 74]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 259],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 100, -38],
-                                       [101, 101, 260],
-                                       [102, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 99, -78],
-                                       [100, 100, 261],
-                                       [101, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 107, -31],
-                                       [108, 108, 262],
-                                       [109, 122, 74]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ],
-                               [
-                                       [48, 122, -35]
-                               ]
-                       ]
-               ]
-       end
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       private fun nil_array: Array[Array[Int]]
-       do
-               return once new Array[Array[Int]]
-       end
+redef class TId
+    redef fun parser_index: Int
+    do
+       return 101
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TAttrid
+    redef fun parser_index: Int
+    do
+       return 102
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TInteger
+    redef fun parser_index: Int
+    do
+       return 103
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TFloat
+    redef fun parser_index: Int
+    do
+       return 104
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TString
+    redef fun parser_index: Int
+    do
+       return 105
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TStartString
+    redef fun parser_index: Int
+    do
+       return 106
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TMidString
+    redef fun parser_index: Int
+    do
+       return 107
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TEndString
+    redef fun parser_index: Int
+    do
+       return 108
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TChar
+    redef fun parser_index: Int
+    do
+       return 109
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TBadString
+    redef fun parser_index: Int
+    do
+       return 110
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TBadTString
+    redef fun parser_index: Int
+    do
+       return 111
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TBadChar
+    redef fun parser_index: Int
+    do
+       return 112
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TExternCodeSegment
+    redef fun parser_index: Int
+    do
+       return 113
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
 
-       var _accept_table: Array[Array[Int]]
-       private fun build_accept_table do
-               _accept_table = once [
-                       [
-                               -1,0,1,1,0,77,-1,-1,69,-1,52,53,67,65,56,66,64,68,81,57,72,59,74,78,54,55,-1,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,-1,1,71,-1,84,-1,85,-1,2,2,-1,83,60,61,63,82,-1,58,73,70,75,78,78,78,78,80,79,79,79,79,79,79,48,79,79,79,16,79,79,79,79,79,79,25,79,31,15,79,79,79,79,79,79,33,79,79,79,79,79,79,79,79,79,79,79,79,79,-1,87,-1,86,-1,2,62,76,80,80,80,80,79,79,32,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,19,79,79,-1,79,79,79,79,79,79,27,79,79,79,13,79,79,79,79,29,47,42,79,79,79,79,79,79,44,79,79,26,45,12,79,79,79,38,79,79,37,5,79,79,46,79,79,79,50,51,79,79,79,79,79,14,79,79,43,79,28,79,79,39,79,21,4,79,20,79,79,79,79,79,79,35,79,79,79,79,79,79,24,79,3,23,79,79,9,79,79,6,36,79,49,79,17,79,18,7,22,8
+redef class TBadExtern
+    redef fun parser_index: Int
+    do
+       return 114
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+
+redef class EOF
+    redef fun parser_index: Int
+    do
+       return 115
+    end
+end
 
-                       ]
-               ]
+redef class Lexer
+       redef fun make_token(accept_token, location)
+       do
+               if accept_token == 1 then
+                       return new TEol.init_tk(location)
+               end
+               if accept_token == 2 then
+                       return new TComment.init_tk(location)
+               end
+               if accept_token == 3 then
+                       return new TKwpackage.init_tk(location)
+               end
+               if accept_token == 4 then
+                       return new TKwmodule.init_tk(location)
+               end
+               if accept_token == 5 then
+                       return new TKwimport.init_tk(location)
+               end
+               if accept_token == 6 then
+                       return new TKwclass.init_tk(location)
+               end
+               if accept_token == 7 then
+                       return new TKwabstract.init_tk(location)
+               end
+               if accept_token == 8 then
+                       return new TKwinterface.init_tk(location)
+               end
+               if accept_token == 9 then
+                       return new TKwenum.init_tk(location)
+               end
+               if accept_token == 10 then
+                       return new TKwsubset.init_tk(location)
+               end
+               if accept_token == 11 then
+                       return new TKwend.init_tk(location)
+               end
+               if accept_token == 12 then
+                       return new TKwmeth.init_tk(location)
+               end
+               if accept_token == 13 then
+                       return new TKwtype.init_tk(location)
+               end
+               if accept_token == 14 then
+                       return new TKwinit.init_tk(location)
+               end
+               if accept_token == 15 then
+                       return new TKwredef.init_tk(location)
+               end
+               if accept_token == 16 then
+                       return new TKwis.init_tk(location)
+               end
+               if accept_token == 17 then
+                       return new TKwdo.init_tk(location)
+               end
+               if accept_token == 18 then
+                       return new TKwvar.init_tk(location)
+               end
+               if accept_token == 19 then
+                       return new TKwextern.init_tk(location)
+               end
+               if accept_token == 20 then
+                       return new TKwpublic.init_tk(location)
+               end
+               if accept_token == 21 then
+                       return new TKwprotected.init_tk(location)
+               end
+               if accept_token == 22 then
+                       return new TKwprivate.init_tk(location)
+               end
+               if accept_token == 23 then
+                       return new TKwintrude.init_tk(location)
+               end
+               if accept_token == 24 then
+                       return new TKwif.init_tk(location)
+               end
+               if accept_token == 25 then
+                       return new TKwthen.init_tk(location)
+               end
+               if accept_token == 26 then
+                       return new TKwelse.init_tk(location)
+               end
+               if accept_token == 27 then
+                       return new TKwwhile.init_tk(location)
+               end
+               if accept_token == 28 then
+                       return new TKwloop.init_tk(location)
+               end
+               if accept_token == 29 then
+                       return new TKwfor.init_tk(location)
+               end
+               if accept_token == 30 then
+                       return new TKwin.init_tk(location)
+               end
+               if accept_token == 31 then
+                       return new TKwand.init_tk(location)
+               end
+               if accept_token == 32 then
+                       return new TKwor.init_tk(location)
+               end
+               if accept_token == 33 then
+                       return new TKwnot.init_tk(location)
+               end
+               if accept_token == 34 then
+                       return new TKwimplies.init_tk(location)
+               end
+               if accept_token == 35 then
+                       return new TKwreturn.init_tk(location)
+               end
+               if accept_token == 36 then
+                       return new TKwcontinue.init_tk(location)
+               end
+               if accept_token == 37 then
+                       return new TKwbreak.init_tk(location)
+               end
+               if accept_token == 38 then
+                       return new TKwabort.init_tk(location)
+               end
+               if accept_token == 39 then
+                       return new TKwassert.init_tk(location)
+               end
+               if accept_token == 40 then
+                       return new TKwnew.init_tk(location)
+               end
+               if accept_token == 41 then
+                       return new TKwisa.init_tk(location)
+               end
+               if accept_token == 42 then
+                       return new TKwonce.init_tk(location)
+               end
+               if accept_token == 43 then
+                       return new TKwsuper.init_tk(location)
+               end
+               if accept_token == 44 then
+                       return new TKwself.init_tk(location)
+               end
+               if accept_token == 45 then
+                       return new TKwtrue.init_tk(location)
+               end
+               if accept_token == 46 then
+                       return new TKwfalse.init_tk(location)
+               end
+               if accept_token == 47 then
+                       return new TKwnull.init_tk(location)
+               end
+               if accept_token == 48 then
+                       return new TKwas.init_tk(location)
+               end
+               if accept_token == 49 then
+                       return new TKwnullable.init_tk(location)
+               end
+               if accept_token == 50 then
+                       return new TKwisset.init_tk(location)
+               end
+               if accept_token == 51 then
+                       return new TKwlabel.init_tk(location)
+               end
+               if accept_token == 52 then
+                       return new TKwwith.init_tk(location)
+               end
+               if accept_token == 53 then
+                       return new TKwdebug.init_tk(location)
+               end
+               if accept_token == 54 then
+                       return new TKwyield.init_tk(location)
+               end
+               if accept_token == 55 then
+                       return new TKwcatch.init_tk(location)
+               end
+               if accept_token == 56 then
+                       return new TOpar.init_tk(location)
+               end
+               if accept_token == 57 then
+                       return new TCpar.init_tk(location)
+               end
+               if accept_token == 58 then
+                       return new TObra.init_tk(location)
+               end
+               if accept_token == 59 then
+                       return new TCbra.init_tk(location)
+               end
+               if accept_token == 60 then
+                       return new TComma.init_tk(location)
+               end
+               if accept_token == 61 then
+                       return new TColumn.init_tk(location)
+               end
+               if accept_token == 62 then
+                       return new TQuad.init_tk(location)
+               end
+               if accept_token == 63 then
+                       return new TAssign.init_tk(location)
+               end
+               if accept_token == 64 then
+                       return new TPluseq.init_tk(location)
+               end
+               if accept_token == 65 then
+                       return new TMinuseq.init_tk(location)
+               end
+               if accept_token == 66 then
+                       return new TStareq.init_tk(location)
+               end
+               if accept_token == 67 then
+                       return new TSlasheq.init_tk(location)
+               end
+               if accept_token == 68 then
+                       return new TPercenteq.init_tk(location)
+               end
+               if accept_token == 69 then
+                       return new TStarstareq.init_tk(location)
+               end
+               if accept_token == 70 then
+                       return new TPipeeq.init_tk(location)
+               end
+               if accept_token == 71 then
+                       return new TCareteq.init_tk(location)
+               end
+               if accept_token == 72 then
+                       return new TAmpeq.init_tk(location)
+               end
+               if accept_token == 73 then
+                       return new TLleq.init_tk(location)
+               end
+               if accept_token == 74 then
+                       return new TGgeq.init_tk(location)
+               end
+               if accept_token == 75 then
+                       return new TDotdotdot.init_tk(location)
+               end
+               if accept_token == 76 then
+                       return new TDotdot.init_tk(location)
+               end
+               if accept_token == 77 then
+                       return new TDot.init_tk(location)
+               end
+               if accept_token == 78 then
+                       return new TPlus.init_tk(location)
+               end
+               if accept_token == 79 then
+                       return new TMinus.init_tk(location)
+               end
+               if accept_token == 80 then
+                       return new TStar.init_tk(location)
+               end
+               if accept_token == 81 then
+                       return new TStarstar.init_tk(location)
+               end
+               if accept_token == 82 then
+                       return new TSlash.init_tk(location)
+               end
+               if accept_token == 83 then
+                       return new TPercent.init_tk(location)
+               end
+               if accept_token == 84 then
+                       return new TPipe.init_tk(location)
+               end
+               if accept_token == 85 then
+                       return new TCaret.init_tk(location)
+               end
+               if accept_token == 86 then
+                       return new TAmp.init_tk(location)
+               end
+               if accept_token == 87 then
+                       return new TTilde.init_tk(location)
+               end
+               if accept_token == 88 then
+                       return new TEq.init_tk(location)
+               end
+               if accept_token == 89 then
+                       return new TNe.init_tk(location)
+               end
+               if accept_token == 90 then
+                       return new TLt.init_tk(location)
+               end
+               if accept_token == 91 then
+                       return new TLe.init_tk(location)
+               end
+               if accept_token == 92 then
+                       return new TLl.init_tk(location)
+               end
+               if accept_token == 93 then
+                       return new TGt.init_tk(location)
+               end
+               if accept_token == 94 then
+                       return new TGe.init_tk(location)
+               end
+               if accept_token == 95 then
+                       return new TGg.init_tk(location)
+               end
+               if accept_token == 96 then
+                       return new TStarship.init_tk(location)
+               end
+               if accept_token == 97 then
+                       return new TBang.init_tk(location)
+               end
+               if accept_token == 98 then
+                       return new TQuest.init_tk(location)
+               end
+               if accept_token == 99 then
+                       return new TAt.init_tk(location)
+               end
+               if accept_token == 100 then
+                       return new TSemi.init_tk(location)
+               end
+               if accept_token == 101 then
+                       return new TClassid.init_tk(location)
+               end
+               if accept_token == 102 then
+                       return new TId.init_tk(location)
+               end
+               if accept_token == 103 then
+                       return new TAttrid.init_tk(location)
+               end
+               if accept_token == 104 then
+                       return new TInteger.init_tk(location)
+               end
+               if accept_token == 105 then
+                       return new TFloat.init_tk(location)
+               end
+               if accept_token == 106 then
+                       return new TString.init_tk(location)
+               end
+               if accept_token == 107 then
+                       return new TStartString.init_tk(location)
+               end
+               if accept_token == 108 then
+                       return new TMidString.init_tk(location)
+               end
+               if accept_token == 109 then
+                       return new TEndString.init_tk(location)
+               end
+               if accept_token == 110 then
+                       return new TChar.init_tk(location)
+               end
+               if accept_token == 111 then
+                       return new TBadString.init_tk(location)
+               end
+               if accept_token == 112 then
+                       return new TBadTString.init_tk(location)
+               end
+               if accept_token == 113 then
+                       return new TBadChar.init_tk(location)
+               end
+               if accept_token == 114 then
+                       return new TExternCodeSegment.init_tk(location)
+               end
+               if accept_token == 115 then
+                       return new TBadExtern.init_tk(location)
+               end
+               abort # unknown token index `accept_token`
        end
 end