Merge branch 'dump_rta'
[nit.git] / src / parser / lexer.nit
index d226006..614a11e 100644 (file)
@@ -1,6 +1,6 @@
 # Lexer and its tokens.
 # This file was generated by SableCC (http://www.sablecc.org/).
-package lexer
+module lexer
 
 intrude import parser_nodes
 private import tables
@@ -17,6 +17,11 @@ redef class Token
        return res
     end
 
+    redef fun text=(text)
+    do
+        _text = text
+    end
+
     fun parser_index: Int is abstract
 end
 
@@ -44,7 +49,7 @@ redef class TComment
     end
 end
 
-redef class TKwmodule
+redef class TKwpackage
     redef fun parser_index: Int
     do
        return 2
@@ -56,7 +61,7 @@ redef class TKwmodule
     end
 end
 
-redef class TKwimport
+redef class TKwmodule
     redef fun parser_index: Int
     do
        return 3
@@ -68,7 +73,7 @@ redef class TKwimport
     end
 end
 
-redef class TKwclass
+redef class TKwimport
     redef fun parser_index: Int
     do
        return 4
@@ -80,7 +85,7 @@ redef class TKwclass
     end
 end
 
-redef class TKwabstract
+redef class TKwclass
     redef fun parser_index: Int
     do
        return 5
@@ -92,7 +97,7 @@ redef class TKwabstract
     end
 end
 
-redef class TKwinterface
+redef class TKwabstract
     redef fun parser_index: Int
     do
        return 6
@@ -104,7 +109,7 @@ redef class TKwinterface
     end
 end
 
-redef class TKwenum
+redef class TKwinterface
     redef fun parser_index: Int
     do
        return 7
@@ -116,7 +121,7 @@ redef class TKwenum
     end
 end
 
-redef class TKwspecial
+redef class TKwenum
     redef fun parser_index: Int
     do
        return 8
@@ -428,7 +433,7 @@ redef class TKwnot
     end
 end
 
-redef class TKwreturn
+redef class TKwimplies
     redef fun parser_index: Int
     do
        return 34
@@ -440,7 +445,7 @@ redef class TKwreturn
     end
 end
 
-redef class TKwcontinue
+redef class TKwreturn
     redef fun parser_index: Int
     do
        return 35
@@ -452,7 +457,7 @@ redef class TKwcontinue
     end
 end
 
-redef class TKwbreak
+redef class TKwcontinue
     redef fun parser_index: Int
     do
        return 36
@@ -464,7 +469,7 @@ redef class TKwbreak
     end
 end
 
-redef class TKwabort
+redef class TKwbreak
     redef fun parser_index: Int
     do
        return 37
@@ -476,7 +481,7 @@ redef class TKwabort
     end
 end
 
-redef class TKwassert
+redef class TKwabort
     redef fun parser_index: Int
     do
        return 38
@@ -488,7 +493,7 @@ redef class TKwassert
     end
 end
 
-redef class TKwnew
+redef class TKwassert
     redef fun parser_index: Int
     do
        return 39
@@ -500,7 +505,7 @@ redef class TKwnew
     end
 end
 
-redef class TKwisa
+redef class TKwnew
     redef fun parser_index: Int
     do
        return 40
@@ -512,7 +517,7 @@ redef class TKwisa
     end
 end
 
-redef class TKwonce
+redef class TKwisa
     redef fun parser_index: Int
     do
        return 41
@@ -524,7 +529,7 @@ redef class TKwonce
     end
 end
 
-redef class TKwsuper
+redef class TKwonce
     redef fun parser_index: Int
     do
        return 42
@@ -536,7 +541,7 @@ redef class TKwsuper
     end
 end
 
-redef class TKwself
+redef class TKwsuper
     redef fun parser_index: Int
     do
        return 43
@@ -548,7 +553,7 @@ redef class TKwself
     end
 end
 
-redef class TKwtrue
+redef class TKwself
     redef fun parser_index: Int
     do
        return 44
@@ -560,7 +565,7 @@ redef class TKwtrue
     end
 end
 
-redef class TKwfalse
+redef class TKwtrue
     redef fun parser_index: Int
     do
        return 45
@@ -572,7 +577,7 @@ redef class TKwfalse
     end
 end
 
-redef class TKwnull
+redef class TKwfalse
     redef fun parser_index: Int
     do
        return 46
@@ -584,7 +589,7 @@ redef class TKwnull
     end
 end
 
-redef class TKwas
+redef class TKwnull
     redef fun parser_index: Int
     do
        return 47
@@ -596,7 +601,7 @@ redef class TKwas
     end
 end
 
-redef class TKwnullable
+redef class TKwas
     redef fun parser_index: Int
     do
        return 48
@@ -608,7 +613,7 @@ redef class TKwnullable
     end
 end
 
-redef class TKwisset
+redef class TKwnullable
     redef fun parser_index: Int
     do
        return 49
@@ -620,7 +625,7 @@ redef class TKwisset
     end
 end
 
-redef class TKwlabel
+redef class TKwisset
     redef fun parser_index: Int
     do
        return 50
@@ -632,7 +637,7 @@ redef class TKwlabel
     end
 end
 
-redef class TKwdebug
+redef class TKwlabel
     redef fun parser_index: Int
     do
        return 51
@@ -644,7 +649,7 @@ redef class TKwdebug
     end
 end
 
-redef class TOpar
+redef class TKwdebug
     redef fun parser_index: Int
     do
        return 52
@@ -656,7 +661,7 @@ redef class TOpar
     end
 end
 
-redef class TCpar
+redef class TOpar
     redef fun parser_index: Int
     do
        return 53
@@ -668,7 +673,7 @@ redef class TCpar
     end
 end
 
-redef class TObra
+redef class TCpar
     redef fun parser_index: Int
     do
        return 54
@@ -680,7 +685,7 @@ redef class TObra
     end
 end
 
-redef class TCbra
+redef class TObra
     redef fun parser_index: Int
     do
        return 55
@@ -692,7 +697,7 @@ redef class TCbra
     end
 end
 
-redef class TComma
+redef class TCbra
     redef fun parser_index: Int
     do
        return 56
@@ -704,7 +709,7 @@ redef class TComma
     end
 end
 
-redef class TColumn
+redef class TComma
     redef fun parser_index: Int
     do
        return 57
@@ -716,7 +721,7 @@ redef class TColumn
     end
 end
 
-redef class TQuad
+redef class TColumn
     redef fun parser_index: Int
     do
        return 58
@@ -728,7 +733,7 @@ redef class TQuad
     end
 end
 
-redef class TAssign
+redef class TQuad
     redef fun parser_index: Int
     do
        return 59
@@ -740,7 +745,7 @@ redef class TAssign
     end
 end
 
-redef class TPluseq
+redef class TAssign
     redef fun parser_index: Int
     do
        return 60
@@ -752,7 +757,7 @@ redef class TPluseq
     end
 end
 
-redef class TMinuseq
+redef class TPluseq
     redef fun parser_index: Int
     do
        return 61
@@ -764,7 +769,7 @@ redef class TMinuseq
     end
 end
 
-redef class TDotdotdot
+redef class TMinuseq
     redef fun parser_index: Int
     do
        return 62
@@ -776,7 +781,7 @@ redef class TDotdotdot
     end
 end
 
-redef class TDotdot
+redef class TDotdotdot
     redef fun parser_index: Int
     do
        return 63
@@ -788,7 +793,7 @@ redef class TDotdot
     end
 end
 
-redef class TDot
+redef class TDotdot
     redef fun parser_index: Int
     do
        return 64
@@ -800,7 +805,7 @@ redef class TDot
     end
 end
 
-redef class TPlus
+redef class TDot
     redef fun parser_index: Int
     do
        return 65
@@ -812,7 +817,7 @@ redef class TPlus
     end
 end
 
-redef class TMinus
+redef class TPlus
     redef fun parser_index: Int
     do
        return 66
@@ -824,7 +829,7 @@ redef class TMinus
     end
 end
 
-redef class TStar
+redef class TMinus
     redef fun parser_index: Int
     do
        return 67
@@ -836,7 +841,7 @@ redef class TStar
     end
 end
 
-redef class TSlash
+redef class TStar
     redef fun parser_index: Int
     do
        return 68
@@ -848,7 +853,7 @@ redef class TSlash
     end
 end
 
-redef class TPercent
+redef class TSlash
     redef fun parser_index: Int
     do
        return 69
@@ -860,7 +865,7 @@ redef class TPercent
     end
 end
 
-redef class TEq
+redef class TPercent
     redef fun parser_index: Int
     do
        return 70
@@ -872,7 +877,7 @@ redef class TEq
     end
 end
 
-redef class TNe
+redef class TEq
     redef fun parser_index: Int
     do
        return 71
@@ -884,7 +889,7 @@ redef class TNe
     end
 end
 
-redef class TLt
+redef class TNe
     redef fun parser_index: Int
     do
        return 72
@@ -896,7 +901,7 @@ redef class TLt
     end
 end
 
-redef class TLe
+redef class TLt
     redef fun parser_index: Int
     do
        return 73
@@ -908,7 +913,7 @@ redef class TLe
     end
 end
 
-redef class TLl
+redef class TLe
     redef fun parser_index: Int
     do
        return 74
@@ -920,7 +925,7 @@ redef class TLl
     end
 end
 
-redef class TGt
+redef class TLl
     redef fun parser_index: Int
     do
        return 75
@@ -932,7 +937,7 @@ redef class TGt
     end
 end
 
-redef class TGe
+redef class TGt
     redef fun parser_index: Int
     do
        return 76
@@ -944,7 +949,7 @@ redef class TGe
     end
 end
 
-redef class TGg
+redef class TGe
     redef fun parser_index: Int
     do
        return 77
@@ -956,7 +961,7 @@ redef class TGg
     end
 end
 
-redef class TStarship
+redef class TGg
     redef fun parser_index: Int
     do
        return 78
@@ -968,7 +973,7 @@ redef class TStarship
     end
 end
 
-redef class TBang
+redef class TStarship
     redef fun parser_index: Int
     do
        return 79
@@ -980,7 +985,7 @@ redef class TBang
     end
 end
 
-redef class TClassid
+redef class TBang
     redef fun parser_index: Int
     do
        return 80
@@ -992,7 +997,7 @@ redef class TClassid
     end
 end
 
-redef class TId
+redef class TAt
     redef fun parser_index: Int
     do
        return 81
@@ -1004,7 +1009,7 @@ redef class TId
     end
 end
 
-redef class TAttrid
+redef class TClassid
     redef fun parser_index: Int
     do
        return 82
@@ -1016,7 +1021,7 @@ redef class TAttrid
     end
 end
 
-redef class TNumber
+redef class TId
     redef fun parser_index: Int
     do
        return 83
@@ -1028,7 +1033,7 @@ redef class TNumber
     end
 end
 
-redef class TFloat
+redef class TAttrid
     redef fun parser_index: Int
     do
        return 84
@@ -1040,7 +1045,7 @@ redef class TFloat
     end
 end
 
-redef class TChar
+redef class TNumber
     redef fun parser_index: Int
     do
        return 85
@@ -1052,7 +1057,7 @@ redef class TChar
     end
 end
 
-redef class TString
+redef class TFloat
     redef fun parser_index: Int
     do
        return 86
@@ -1064,7 +1069,7 @@ redef class TString
     end
 end
 
-redef class TStartString
+redef class TString
     redef fun parser_index: Int
     do
        return 87
@@ -1076,7 +1081,7 @@ redef class TStartString
     end
 end
 
-redef class TMidString
+redef class TStartString
     redef fun parser_index: Int
     do
        return 88
@@ -1088,7 +1093,7 @@ redef class TMidString
     end
 end
 
-redef class TEndString
+redef class TMidString
     redef fun parser_index: Int
     do
        return 89
@@ -1100,7 +1105,7 @@ redef class TEndString
     end
 end
 
-redef class TBadChar
+redef class TEndString
     redef fun parser_index: Int
     do
        return 90
@@ -1112,7 +1117,7 @@ redef class TBadChar
     end
 end
 
-redef class TBadString
+redef class TChar
     redef fun parser_index: Int
     do
        return 91
@@ -1124,14 +1129,50 @@ redef class TBadString
     end
 end
 
+redef class TBadString
+    redef fun parser_index: Int
+    do
+       return 92
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TBadChar
+    redef fun parser_index: Int
+    do
+       return 93
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TExternCodeSegment
+    redef fun parser_index: Int
+    do
+       return 94
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
 
 redef class EOF
     redef fun parser_index: Int
     do
-       return 92
+       return 95
     end
 
-    init(loc: Location)
+    init init_tk(loc: Location)
     do
         _text = ""
                _location = loc
@@ -1143,11 +1184,30 @@ redef class AError
 
     init init_error(message: String, loc: Location)
     do
-               init(loc)
+               init_tk(loc)
                _message = message
     end
 end
 
+redef class ALexerError
+    readable var _string: String
+
+    init init_lexer_error(message: String, loc: Location, string: String)
+    do
+               init_error(message, loc)
+               _string = string
+    end
+end
+
+redef class AParserError
+    readable var _token: Token
+
+    init init_parser_error(message: String, loc: Location, token: Token)
+    do
+               init_error(message, loc)
+               _token = token
+    end
+end
 
 # The lexer extract NIT tokens from an input stream.
 # It is better user with the Parser
@@ -1183,28 +1243,40 @@ class Lexer
                _file = file
        end
 
+       # The last peeked token to chain them
+       private var last_token: nullable Token = null
+
        # Give the next token (but do not consume it)
        fun peek: Token
        do
-               while _token == null do
-                       _token = get_token
+               var t = _token
+               if t != null then return t
+
+               t = get_token
+               while t == null do t = get_token
+
+               var l = last_token
+               if l != null then
+                       l.next_token = t
+                       t.prev_token = l
                end
-               return _token.as(not null)
+
+               last_token = t
+               _token = t
+               return t
        end
 
        # Give and consume the next token
        fun next: Token
        do
-               var result = _token
-               while result == null do
-                       result = get_token
-               end
+               var result = peek
                _token = null
                return result
        end
 
-       # Get a token, or null if it is discarded
-       private fun get_token: nullable Token
+       # Primitive method to return a token, or return null if it is discarded
+       # Is used to implement `peek` and `next`
+       protected fun get_token: nullable Token
        do
                var dfa_state = 0
 
@@ -1225,7 +1297,7 @@ class Lexer
                        if sp >= string_len then
                                dfa_state = -1
                        else
-                               var c = string[sp].ascii
+                               var c = string.chars[sp].ascii
                                sp += 1
 
                                var cr = _cr
@@ -1309,25 +1381,25 @@ class Lexer
                                                return new TComment.init_tk(location)
                                        end
                                        if accept_token == 3 then
-                                               return new TKwmodule.init_tk(location)
+                                               return new TKwpackage.init_tk(location)
                                        end
                                        if accept_token == 4 then
-                                               return new TKwimport.init_tk(location)
+                                               return new TKwmodule.init_tk(location)
                                        end
                                        if accept_token == 5 then
-                                               return new TKwclass.init_tk(location)
+                                               return new TKwimport.init_tk(location)
                                        end
                                        if accept_token == 6 then
-                                               return new TKwabstract.init_tk(location)
+                                               return new TKwclass.init_tk(location)
                                        end
                                        if accept_token == 7 then
-                                               return new TKwinterface.init_tk(location)
+                                               return new TKwabstract.init_tk(location)
                                        end
                                        if accept_token == 8 then
-                                               return new TKwenum.init_tk(location)
+                                               return new TKwinterface.init_tk(location)
                                        end
                                        if accept_token == 9 then
-                                               return new TKwspecial.init_tk(location)
+                                               return new TKwenum.init_tk(location)
                                        end
                                        if accept_token == 10 then
                                                return new TKwend.init_tk(location)
@@ -1405,188 +1477,197 @@ class Lexer
                                                return new TKwnot.init_tk(location)
                                        end
                                        if accept_token == 35 then
-                                               return new TKwreturn.init_tk(location)
+                                               return new TKwimplies.init_tk(location)
                                        end
                                        if accept_token == 36 then
-                                               return new TKwcontinue.init_tk(location)
+                                               return new TKwreturn.init_tk(location)
                                        end
                                        if accept_token == 37 then
-                                               return new TKwbreak.init_tk(location)
+                                               return new TKwcontinue.init_tk(location)
                                        end
                                        if accept_token == 38 then
-                                               return new TKwabort.init_tk(location)
+                                               return new TKwbreak.init_tk(location)
                                        end
                                        if accept_token == 39 then
-                                               return new TKwassert.init_tk(location)
+                                               return new TKwabort.init_tk(location)
                                        end
                                        if accept_token == 40 then
-                                               return new TKwnew.init_tk(location)
+                                               return new TKwassert.init_tk(location)
                                        end
                                        if accept_token == 41 then
-                                               return new TKwisa.init_tk(location)
+                                               return new TKwnew.init_tk(location)
                                        end
                                        if accept_token == 42 then
-                                               return new TKwonce.init_tk(location)
+                                               return new TKwisa.init_tk(location)
                                        end
                                        if accept_token == 43 then
-                                               return new TKwsuper.init_tk(location)
+                                               return new TKwonce.init_tk(location)
                                        end
                                        if accept_token == 44 then
-                                               return new TKwself.init_tk(location)
+                                               return new TKwsuper.init_tk(location)
                                        end
                                        if accept_token == 45 then
-                                               return new TKwtrue.init_tk(location)
+                                               return new TKwself.init_tk(location)
                                        end
                                        if accept_token == 46 then
-                                               return new TKwfalse.init_tk(location)
+                                               return new TKwtrue.init_tk(location)
                                        end
                                        if accept_token == 47 then
-                                               return new TKwnull.init_tk(location)
+                                               return new TKwfalse.init_tk(location)
                                        end
                                        if accept_token == 48 then
-                                               return new TKwas.init_tk(location)
+                                               return new TKwnull.init_tk(location)
                                        end
                                        if accept_token == 49 then
-                                               return new TKwnullable.init_tk(location)
+                                               return new TKwas.init_tk(location)
                                        end
                                        if accept_token == 50 then
-                                               return new TKwisset.init_tk(location)
+                                               return new TKwnullable.init_tk(location)
                                        end
                                        if accept_token == 51 then
-                                               return new TKwlabel.init_tk(location)
+                                               return new TKwisset.init_tk(location)
                                        end
                                        if accept_token == 52 then
-                                               return new TKwdebug.init_tk(location)
+                                               return new TKwlabel.init_tk(location)
                                        end
                                        if accept_token == 53 then
-                                               return new TOpar.init_tk(location)
+                                               return new TKwdebug.init_tk(location)
                                        end
                                        if accept_token == 54 then
-                                               return new TCpar.init_tk(location)
+                                               return new TOpar.init_tk(location)
                                        end
                                        if accept_token == 55 then
-                                               return new TObra.init_tk(location)
+                                               return new TCpar.init_tk(location)
                                        end
                                        if accept_token == 56 then
-                                               return new TCbra.init_tk(location)
+                                               return new TObra.init_tk(location)
                                        end
                                        if accept_token == 57 then
-                                               return new TComma.init_tk(location)
+                                               return new TCbra.init_tk(location)
                                        end
                                        if accept_token == 58 then
-                                               return new TColumn.init_tk(location)
+                                               return new TComma.init_tk(location)
                                        end
                                        if accept_token == 59 then
-                                               return new TQuad.init_tk(location)
+                                               return new TColumn.init_tk(location)
                                        end
                                        if accept_token == 60 then
-                                               return new TAssign.init_tk(location)
+                                               return new TQuad.init_tk(location)
                                        end
                                        if accept_token == 61 then
-                                               return new TPluseq.init_tk(location)
+                                               return new TAssign.init_tk(location)
                                        end
                                        if accept_token == 62 then
-                                               return new TMinuseq.init_tk(location)
+                                               return new TPluseq.init_tk(location)
                                        end
                                        if accept_token == 63 then
-                                               return new TDotdotdot.init_tk(location)
+                                               return new TMinuseq.init_tk(location)
                                        end
                                        if accept_token == 64 then
-                                               return new TDotdot.init_tk(location)
+                                               return new TDotdotdot.init_tk(location)
                                        end
                                        if accept_token == 65 then
-                                               return new TDot.init_tk(location)
+                                               return new TDotdot.init_tk(location)
                                        end
                                        if accept_token == 66 then
-                                               return new TPlus.init_tk(location)
+                                               return new TDot.init_tk(location)
                                        end
                                        if accept_token == 67 then
-                                               return new TMinus.init_tk(location)
+                                               return new TPlus.init_tk(location)
                                        end
                                        if accept_token == 68 then
-                                               return new TStar.init_tk(location)
+                                               return new TMinus.init_tk(location)
                                        end
                                        if accept_token == 69 then
-                                               return new TSlash.init_tk(location)
+                                               return new TStar.init_tk(location)
                                        end
                                        if accept_token == 70 then
-                                               return new TPercent.init_tk(location)
+                                               return new TSlash.init_tk(location)
                                        end
                                        if accept_token == 71 then
-                                               return new TEq.init_tk(location)
+                                               return new TPercent.init_tk(location)
                                        end
                                        if accept_token == 72 then
-                                               return new TNe.init_tk(location)
+                                               return new TEq.init_tk(location)
                                        end
                                        if accept_token == 73 then
-                                               return new TLt.init_tk(location)
+                                               return new TNe.init_tk(location)
                                        end
                                        if accept_token == 74 then
-                                               return new TLe.init_tk(location)
+                                               return new TLt.init_tk(location)
                                        end
                                        if accept_token == 75 then
-                                               return new TLl.init_tk(location)
+                                               return new TLe.init_tk(location)
                                        end
                                        if accept_token == 76 then
-                                               return new TGt.init_tk(location)
+                                               return new TLl.init_tk(location)
                                        end
                                        if accept_token == 77 then
-                                               return new TGe.init_tk(location)
+                                               return new TGt.init_tk(location)
                                        end
                                        if accept_token == 78 then
-                                               return new TGg.init_tk(location)
+                                               return new TGe.init_tk(location)
                                        end
                                        if accept_token == 79 then
-                                               return new TStarship.init_tk(location)
+                                               return new TGg.init_tk(location)
                                        end
                                        if accept_token == 80 then
-                                               return new TBang.init_tk(location)
+                                               return new TStarship.init_tk(location)
                                        end
                                        if accept_token == 81 then
-                                               return new TClassid.init_tk(location)
+                                               return new TBang.init_tk(location)
                                        end
                                        if accept_token == 82 then
-                                               return new TId.init_tk(location)
+                                               return new TAt.init_tk(location)
                                        end
                                        if accept_token == 83 then
-                                               return new TAttrid.init_tk(location)
+                                               return new TClassid.init_tk(location)
                                        end
                                        if accept_token == 84 then
-                                               return new TNumber.init_tk(location)
+                                               return new TId.init_tk(location)
                                        end
                                        if accept_token == 85 then
-                                               return new TFloat.init_tk(location)
+                                               return new TAttrid.init_tk(location)
                                        end
                                        if accept_token == 86 then
-                                               return new TChar.init_tk(location)
+                                               return new TNumber.init_tk(location)
                                        end
                                        if accept_token == 87 then
-                                               return new TString.init_tk(location)
+                                               return new TFloat.init_tk(location)
                                        end
                                        if accept_token == 88 then
-                                               return new TStartString.init_tk(location)
+                                               return new TString.init_tk(location)
                                        end
                                        if accept_token == 89 then
-                                               return new TMidString.init_tk(location)
+                                               return new TStartString.init_tk(location)
                                        end
                                        if accept_token == 90 then
-                                               return new TEndString.init_tk(location)
+                                               return new TMidString.init_tk(location)
                                        end
                                        if accept_token == 91 then
-                                               return new TBadChar.init_tk(location)
+                                               return new TEndString.init_tk(location)
                                        end
                                        if accept_token == 92 then
+                                               return new TChar.init_tk(location)
+                                       end
+                                       if accept_token == 93 then
                                                return new TBadString.init_tk(location)
                                        end
+                                       if accept_token == 94 then
+                                               return new TBadChar.init_tk(location)
+                                       end
+                                       if accept_token == 95 then
+                                               return new TExternCodeSegment.init_tk(location)
+                                       end
                                else
                                        _stream_pos = sp
                                        var location = new Location(_file, start_line + 1, start_line + 1, start_pos + 1, start_pos + 1)
                                        if sp > start_stream_pos then
                                                var text = string.substring(start_stream_pos, sp-start_stream_pos)
-                                               var token = new AError.init_error("Syntax error: unknown token {text}.", location)
+                                               var token = new ALexerError.init_lexer_error("Syntax error: unknown token {text}.", location, text)
                                                return token
                                        else
-                                               var token = new EOF(location)
+                                               var token = new EOF.init_tk(location)
                                                return token
                                        end
                                end