parser: can parse program from strings
authorJean Privat <jean@pryen.org>
Thu, 18 Jul 2013 01:13:04 +0000 (21:13 -0400)
committerJean Privat <jean@pryen.org>
Thu, 18 Jul 2013 01:13:04 +0000 (21:13 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/location.nit
src/test_parser.nit
tests/sav/test_parser.res
tests/sav/test_parser_args1.res
tests/sav/test_parser_args2.res
tests/sav/test_parser_args6.res [new file with mode: 0644]
tests/test_parser.args

index 3da516f..e392ff0 100644 (file)
@@ -33,6 +33,14 @@ class SourceFile
                line_starts[0] = 0
        end
 
+       # Create a new sourcefile using a dummy filename and a given content
+       init from_string(filename: String, string: String)
+       do
+               self.filename = filename
+               self.string = string
+               line_starts[0] = 0
+       end
+
        # Position of each line start
        var line_starts: Array[Int] = new Array[Int]
 end
index 98669e2..f19857d 100644 (file)
@@ -44,6 +44,7 @@ end
 var no_print = false
 var only_lexer = false
 var need_help = false
+var no_file = false
 
 while not args.is_empty and args.first.first == '-' do
        if args.first == "-n" then
@@ -51,7 +52,9 @@ while not args.is_empty and args.first.first == '-' do
        else if args.first == "-l" then
                only_lexer = true
        else if args.first == "-p" then
-               only_lexer = false 
+               only_lexer = false
+       else if args.first == "-e" then
+               no_file = true
        else if args.first == "-h" or args.first == "-?" then
                need_help = true
        else
@@ -68,11 +71,19 @@ if args.is_empty or need_help then
        print("  -n     do not print anything")
        print("  -l     only lexer")
        print("  -p     lexer and parser (default)")
+       print("  -e     instead on files, each argument is a content to parse")
        print("  -h     print this help")
 else
        for a in args do
-               var f = new IFStream.open(a)
-               var lexer = new Lexer(new SourceFile(a, f))
+               var source
+               if no_file then
+                       source = new SourceFile.from_string("", a)
+               else
+                       var f = new IFStream.open(a)
+                       source = new SourceFile(a, f)
+                       f.close
+               end
+               var lexer = new Lexer(source)
                if only_lexer then
                        var token = lexer.next
                        while not token isa EOF do
@@ -81,11 +92,9 @@ else
                                end
                                token = lexer.next
                        end
-                       f.close
                else
                        var parser = new Parser(lexer)
                        var tree = parser.parse
-                       f.close
 
                        var error = tree.n_eof
                        if error isa AError then
index 6b348ae..eb54d78 100644 (file)
@@ -4,4 +4,5 @@ options:
   -n   do not print anything
   -l   only lexer
   -p   lexer and parser (default)
+  -e   instead on files, each argument is a content to parse
   -h   print this help
index ecf3dad..bccf533 100644 (file)
@@ -1,5 +1,5 @@
-../src/test_parser.nit:17,1--102,1
-  ../src/test_parser.nit:17,1--101,3
+../src/test_parser.nit:17,1--111,1
+  ../src/test_parser.nit:17,1--110,3
     ../src/test_parser.nit:17,1--18,19
       ../src/test_parser.nit:17,1--18,0
         '# Program used to test the NIT parser
               literal value '0' ... ../src/test_parser.nit:40,11
           keyword 'end' ... ../src/test_parser.nit:41,2--4
       keyword 'end' ... ../src/test_parser.nit:42,1--3
-    ../src/test_parser.nit:44,1--101,3
-      ../src/test_parser.nit:44,1--101,3
-        ../src/test_parser.nit:44,1--101,3
+    ../src/test_parser.nit:44,1--110,3
+      ../src/test_parser.nit:44,1--110,3
+        ../src/test_parser.nit:44,1--110,3
           ../src/test_parser.nit:44,1--20
             keyword 'var' ... ../src/test_parser.nit:44,1--3
             identifier 'no_print' ... ../src/test_parser.nit:44,5--12
             '=' ... ../src/test_parser.nit:46,15
             ../src/test_parser.nit:46,17--21
               keyword 'false' ... ../src/test_parser.nit:46,17--21
-          ../src/test_parser.nit:48,1--62,3
-            keyword 'while' ... ../src/test_parser.nit:48,1--5
-            ../src/test_parser.nit:48,7--51
-              ../src/test_parser.nit:48,7--23
-                keyword 'not' ... ../src/test_parser.nit:48,7--9
-                ../src/test_parser.nit:48,11--23
-                  ../src/test_parser.nit:48,11--14
-                    ../src/test_parser.nit:48,11
-                    identifier 'args' ... ../src/test_parser.nit:48,11--14
-                    ../src/test_parser.nit:48,11
-                  identifier 'is_empty' ... ../src/test_parser.nit:48,16--23
-                  ../src/test_parser.nit:48,11
-              ../src/test_parser.nit:48,29--51
-                ../src/test_parser.nit:48,29--44
-                  ../src/test_parser.nit:48,29--38
-                    ../src/test_parser.nit:48,29--32
-                      ../src/test_parser.nit:48,29
-                      identifier 'args' ... ../src/test_parser.nit:48,29--32
-                      ../src/test_parser.nit:48,29
-                    identifier 'first' ... ../src/test_parser.nit:48,34--38
-                    ../src/test_parser.nit:48,29
-                  identifier 'first' ... ../src/test_parser.nit:48,40--44
-                  ../src/test_parser.nit:48,29
-                ../src/test_parser.nit:48,49--51
-                  literal value ''-'' ... ../src/test_parser.nit:48,49--51
-            keyword 'do' ... ../src/test_parser.nit:48,53--54
-            ../src/test_parser.nit:49,2--62,3
-              ../src/test_parser.nit:49,2--60,4
-                keyword 'if' ... ../src/test_parser.nit:49,2--3
-                ../src/test_parser.nit:49,5--22
-                  ../src/test_parser.nit:49,5--14
-                    ../src/test_parser.nit:49,5--8
-                      ../src/test_parser.nit:49,5
-                      identifier 'args' ... ../src/test_parser.nit:49,5--8
-                      ../src/test_parser.nit:49,5
-                    identifier 'first' ... ../src/test_parser.nit:49,10--14
-                    ../src/test_parser.nit:49,5
-                  ../src/test_parser.nit:49,19--22
-                    literal value '"-n"' ... ../src/test_parser.nit:49,19--22
-                ../src/test_parser.nit:50,3--17
-                  ../src/test_parser.nit:50,3--17
-                    ../src/test_parser.nit:50,14
-                    identifier 'no_print' ... ../src/test_parser.nit:50,3--10
-                    ../src/test_parser.nit:50,14
-                    '=' ... ../src/test_parser.nit:50,12
-                    ../src/test_parser.nit:50,14--17
-                      keyword 'true' ... ../src/test_parser.nit:50,14--17
-                ../src/test_parser.nit:51,7--60,4
-                  keyword 'if' ... ../src/test_parser.nit:51,7--8
-                  ../src/test_parser.nit:51,10--27
-                    ../src/test_parser.nit:51,10--19
-                      ../src/test_parser.nit:51,10--13
-                        ../src/test_parser.nit:51,10
-                        identifier 'args' ... ../src/test_parser.nit:51,10--13
-                        ../src/test_parser.nit:51,10
-                      identifier 'first' ... ../src/test_parser.nit:51,15--19
-                      ../src/test_parser.nit:51,10
-                    ../src/test_parser.nit:51,24--27
-                      literal value '"-l"' ... ../src/test_parser.nit:51,24--27
-                  ../src/test_parser.nit:52,3--19
-                    ../src/test_parser.nit:52,3--19
-                      ../src/test_parser.nit:52,16
-                      identifier 'only_lexer' ... ../src/test_parser.nit:52,3--12
-                      ../src/test_parser.nit:52,16
-                      '=' ... ../src/test_parser.nit:52,14
-                      ../src/test_parser.nit:52,16--19
-                        keyword 'true' ... ../src/test_parser.nit:52,16--19
-                  ../src/test_parser.nit:53,7--60,4
-                    keyword 'if' ... ../src/test_parser.nit:53,7--8
-                    ../src/test_parser.nit:53,10--27
-                      ../src/test_parser.nit:53,10--19
-                        ../src/test_parser.nit:53,10--13
-                          ../src/test_parser.nit:53,10
-                          identifier 'args' ... ../src/test_parser.nit:53,10--13
-                          ../src/test_parser.nit:53,10
-                        identifier 'first' ... ../src/test_parser.nit:53,15--19
-                        ../src/test_parser.nit:53,10
-                      ../src/test_parser.nit:53,24--27
-                        literal value '"-p"' ... ../src/test_parser.nit:53,24--27
-                    ../src/test_parser.nit:54,3--20
-                      ../src/test_parser.nit:54,3--20
-                        ../src/test_parser.nit:54,16
-                        identifier 'only_lexer' ... ../src/test_parser.nit:54,3--12
-                        ../src/test_parser.nit:54,16
-                        '=' ... ../src/test_parser.nit:54,14
-                        ../src/test_parser.nit:54,16--20
-                          keyword 'false' ... ../src/test_parser.nit:54,16--20
-                    ../src/test_parser.nit:55,7--60,4
-                      keyword 'if' ... ../src/test_parser.nit:55,7--8
-                      ../src/test_parser.nit:55,10--49
-                        ../src/test_parser.nit:55,10--27
-                          ../src/test_parser.nit:55,10--19
-                            ../src/test_parser.nit:55,10--13
-                              ../src/test_parser.nit:55,10
-                              identifier 'args' ... ../src/test_parser.nit:55,10--13
-                              ../src/test_parser.nit:55,10
-                            identifier 'first' ... ../src/test_parser.nit:55,15--19
-                            ../src/test_parser.nit:55,10
-                          ../src/test_parser.nit:55,24--27
-                            literal value '"-h"' ... ../src/test_parser.nit:55,24--27
-                        ../src/test_parser.nit:55,32--49
-                          ../src/test_parser.nit:55,32--41
-                            ../src/test_parser.nit:55,32--35
-                              ../src/test_parser.nit:55,32
-                              identifier 'args' ... ../src/test_parser.nit:55,32--35
-                              ../src/test_parser.nit:55,32
-                            identifier 'first' ... ../src/test_parser.nit:55,37--41
-                            ../src/test_parser.nit:55,32
-                          ../src/test_parser.nit:55,46--49
-                            literal value '"-?"' ... ../src/test_parser.nit:55,46--49
-                      ../src/test_parser.nit:56,3--18
-                        ../src/test_parser.nit:56,3--18
-                          ../src/test_parser.nit:56,15
-                          identifier 'need_help' ... ../src/test_parser.nit:56,3--11
-                          ../src/test_parser.nit:56,15
-                          '=' ... ../src/test_parser.nit:56,13
-                          ../src/test_parser.nit:56,15--18
-                            keyword 'true' ... ../src/test_parser.nit:56,15--18
-                      ../src/test_parser.nit:58,3--60,4
-                        ../src/test_parser.nit:58,3--48
-                          ../src/test_parser.nit:58,3--8
-                            ../src/test_parser.nit:58,3
-                            identifier 'stderr' ... ../src/test_parser.nit:58,3--8
-                            ../src/test_parser.nit:58,3
-                          identifier 'write' ... ../src/test_parser.nit:58,10--14
-                          ../src/test_parser.nit:58,15--48
-                            '(' ... ../src/test_parser.nit:58,15
-                            ../src/test_parser.nit:58,16--47
-                              ../src/test_parser.nit:58,16--32
-                                literal value '"Unknown option {' ... ../src/test_parser.nit:58,16--32
-                              ../src/test_parser.nit:58,33--42
-                                ../src/test_parser.nit:58,33--36
-                                  ../src/test_parser.nit:58,33
-                                  identifier 'args' ... ../src/test_parser.nit:58,33--36
-                                  ../src/test_parser.nit:58,33
-                                identifier 'first' ... ../src/test_parser.nit:58,38--42
-                                ../src/test_parser.nit:58,33
-                              ../src/test_parser.nit:58,43--47
-                                '}.\n"' ... ../src/test_parser.nit:58,43--47
-                            ')' ... ../src/test_parser.nit:58,48
-                        ../src/test_parser.nit:59,3--9
-                          ../src/test_parser.nit:59,8
-                          identifier 'exit' ... ../src/test_parser.nit:59,3--6
-                          ../src/test_parser.nit:59,7--9
-                            '(' ... ../src/test_parser.nit:59,7
-                            ../src/test_parser.nit:59,8
-                              literal value '0' ... ../src/test_parser.nit:59,8
-                            ')' ... ../src/test_parser.nit:59,9
-                        keyword 'end' ... ../src/test_parser.nit:60,2--4
-              ../src/test_parser.nit:61,2--11
-                ../src/test_parser.nit:61,2--5
-                  ../src/test_parser.nit:61,2
-                  identifier 'args' ... ../src/test_parser.nit:61,2--5
-                  ../src/test_parser.nit:61,2
-                identifier 'shift' ... ../src/test_parser.nit:61,7--11
-                ../src/test_parser.nit:61,2
-              keyword 'end' ... ../src/test_parser.nit:62,1--3
-          ../src/test_parser.nit:64,1--101,3
-            keyword 'if' ... ../src/test_parser.nit:64,1--2
-            ../src/test_parser.nit:64,4--29
-              ../src/test_parser.nit:64,4--16
-                ../src/test_parser.nit:64,4--7
-                  ../src/test_parser.nit:64,4
-                  identifier 'args' ... ../src/test_parser.nit:64,4--7
-                  ../src/test_parser.nit:64,4
-                identifier 'is_empty' ... ../src/test_parser.nit:64,9--16
-                ../src/test_parser.nit:64,4
-              ../src/test_parser.nit:64,21--29
-                ../src/test_parser.nit:64,21
-                identifier 'need_help' ... ../src/test_parser.nit:64,21--29
-                ../src/test_parser.nit:64,21
-            ../src/test_parser.nit:65,2--71,30
-              ../src/test_parser.nit:65,2--16
-                ../src/test_parser.nit:65,8
-                identifier 'print' ... ../src/test_parser.nit:65,2--6
-                ../src/test_parser.nit:65,7--16
-                  '(' ... ../src/test_parser.nit:65,7
-                  ../src/test_parser.nit:65,8--15
-                    literal value '"usage:"' ... ../src/test_parser.nit:65,8--15
-                  ')' ... ../src/test_parser.nit:65,16
-              ../src/test_parser.nit:66,2--54
-                ../src/test_parser.nit:66,8
-                identifier 'print' ... ../src/test_parser.nit:66,2--6
-                ../src/test_parser.nit:66,7--54
-                  '(' ... ../src/test_parser.nit:66,7
-                  ../src/test_parser.nit:66,8--53
-                    literal value '"  test_parser [options]... <filename.nit>..."' ... ../src/test_parser.nit:66,8--53
-                  ')' ... ../src/test_parser.nit:66,54
-              ../src/test_parser.nit:67,2--18
-                ../src/test_parser.nit:67,8
-                identifier 'print' ... ../src/test_parser.nit:67,2--6
-                ../src/test_parser.nit:67,7--18
-                  '(' ... ../src/test_parser.nit:67,7
-                  ../src/test_parser.nit:67,8--17
-                    literal value '"options:"' ... ../src/test_parser.nit:67,8--17
-                  ')' ... ../src/test_parser.nit:67,18
-              ../src/test_parser.nit:68,2--36
+          ../src/test_parser.nit:47,1--19
+            keyword 'var' ... ../src/test_parser.nit:47,1--3
+            identifier 'no_file' ... ../src/test_parser.nit:47,5--11
+            '=' ... ../src/test_parser.nit:47,13
+            ../src/test_parser.nit:47,15--19
+              keyword 'false' ... ../src/test_parser.nit:47,15--19
+          ../src/test_parser.nit:49,1--65,3
+            keyword 'while' ... ../src/test_parser.nit:49,1--5
+            ../src/test_parser.nit:49,7--51
+              ../src/test_parser.nit:49,7--23
+                keyword 'not' ... ../src/test_parser.nit:49,7--9
+                ../src/test_parser.nit:49,11--23
+                  ../src/test_parser.nit:49,11--14
+                    ../src/test_parser.nit:49,11
+                    identifier 'args' ... ../src/test_parser.nit:49,11--14
+                    ../src/test_parser.nit:49,11
+                  identifier 'is_empty' ... ../src/test_parser.nit:49,16--23
+                  ../src/test_parser.nit:49,11
+              ../src/test_parser.nit:49,29--51
+                ../src/test_parser.nit:49,29--44
+                  ../src/test_parser.nit:49,29--38
+                    ../src/test_parser.nit:49,29--32
+                      ../src/test_parser.nit:49,29
+                      identifier 'args' ... ../src/test_parser.nit:49,29--32
+                      ../src/test_parser.nit:49,29
+                    identifier 'first' ... ../src/test_parser.nit:49,34--38
+                    ../src/test_parser.nit:49,29
+                  identifier 'first' ... ../src/test_parser.nit:49,40--44
+                  ../src/test_parser.nit:49,29
+                ../src/test_parser.nit:49,49--51
+                  literal value ''-'' ... ../src/test_parser.nit:49,49--51
+            keyword 'do' ... ../src/test_parser.nit:49,53--54
+            ../src/test_parser.nit:50,2--65,3
+              ../src/test_parser.nit:50,2--63,4
+                keyword 'if' ... ../src/test_parser.nit:50,2--3
+                ../src/test_parser.nit:50,5--22
+                  ../src/test_parser.nit:50,5--14
+                    ../src/test_parser.nit:50,5--8
+                      ../src/test_parser.nit:50,5
+                      identifier 'args' ... ../src/test_parser.nit:50,5--8
+                      ../src/test_parser.nit:50,5
+                    identifier 'first' ... ../src/test_parser.nit:50,10--14
+                    ../src/test_parser.nit:50,5
+                  ../src/test_parser.nit:50,19--22
+                    literal value '"-n"' ... ../src/test_parser.nit:50,19--22
+                ../src/test_parser.nit:51,3--17
+                  ../src/test_parser.nit:51,3--17
+                    ../src/test_parser.nit:51,14
+                    identifier 'no_print' ... ../src/test_parser.nit:51,3--10
+                    ../src/test_parser.nit:51,14
+                    '=' ... ../src/test_parser.nit:51,12
+                    ../src/test_parser.nit:51,14--17
+                      keyword 'true' ... ../src/test_parser.nit:51,14--17
+                ../src/test_parser.nit:52,7--63,4
+                  keyword 'if' ... ../src/test_parser.nit:52,7--8
+                  ../src/test_parser.nit:52,10--27
+                    ../src/test_parser.nit:52,10--19
+                      ../src/test_parser.nit:52,10--13
+                        ../src/test_parser.nit:52,10
+                        identifier 'args' ... ../src/test_parser.nit:52,10--13
+                        ../src/test_parser.nit:52,10
+                      identifier 'first' ... ../src/test_parser.nit:52,15--19
+                      ../src/test_parser.nit:52,10
+                    ../src/test_parser.nit:52,24--27
+                      literal value '"-l"' ... ../src/test_parser.nit:52,24--27
+                  ../src/test_parser.nit:53,3--19
+                    ../src/test_parser.nit:53,3--19
+                      ../src/test_parser.nit:53,16
+                      identifier 'only_lexer' ... ../src/test_parser.nit:53,3--12
+                      ../src/test_parser.nit:53,16
+                      '=' ... ../src/test_parser.nit:53,14
+                      ../src/test_parser.nit:53,16--19
+                        keyword 'true' ... ../src/test_parser.nit:53,16--19
+                  ../src/test_parser.nit:54,7--63,4
+                    keyword 'if' ... ../src/test_parser.nit:54,7--8
+                    ../src/test_parser.nit:54,10--27
+                      ../src/test_parser.nit:54,10--19
+                        ../src/test_parser.nit:54,10--13
+                          ../src/test_parser.nit:54,10
+                          identifier 'args' ... ../src/test_parser.nit:54,10--13
+                          ../src/test_parser.nit:54,10
+                        identifier 'first' ... ../src/test_parser.nit:54,15--19
+                        ../src/test_parser.nit:54,10
+                      ../src/test_parser.nit:54,24--27
+                        literal value '"-p"' ... ../src/test_parser.nit:54,24--27
+                    ../src/test_parser.nit:55,3--20
+                      ../src/test_parser.nit:55,3--20
+                        ../src/test_parser.nit:55,16
+                        identifier 'only_lexer' ... ../src/test_parser.nit:55,3--12
+                        ../src/test_parser.nit:55,16
+                        '=' ... ../src/test_parser.nit:55,14
+                        ../src/test_parser.nit:55,16--20
+                          keyword 'false' ... ../src/test_parser.nit:55,16--20
+                    ../src/test_parser.nit:56,7--63,4
+                      keyword 'if' ... ../src/test_parser.nit:56,7--8
+                      ../src/test_parser.nit:56,10--27
+                        ../src/test_parser.nit:56,10--19
+                          ../src/test_parser.nit:56,10--13
+                            ../src/test_parser.nit:56,10
+                            identifier 'args' ... ../src/test_parser.nit:56,10--13
+                            ../src/test_parser.nit:56,10
+                          identifier 'first' ... ../src/test_parser.nit:56,15--19
+                          ../src/test_parser.nit:56,10
+                        ../src/test_parser.nit:56,24--27
+                          literal value '"-e"' ... ../src/test_parser.nit:56,24--27
+                      ../src/test_parser.nit:57,3--16
+                        ../src/test_parser.nit:57,3--16
+                          ../src/test_parser.nit:57,13
+                          identifier 'no_file' ... ../src/test_parser.nit:57,3--9
+                          ../src/test_parser.nit:57,13
+                          '=' ... ../src/test_parser.nit:57,11
+                          ../src/test_parser.nit:57,13--16
+                            keyword 'true' ... ../src/test_parser.nit:57,13--16
+                      ../src/test_parser.nit:58,7--63,4
+                        keyword 'if' ... ../src/test_parser.nit:58,7--8
+                        ../src/test_parser.nit:58,10--49
+                          ../src/test_parser.nit:58,10--27
+                            ../src/test_parser.nit:58,10--19
+                              ../src/test_parser.nit:58,10--13
+                                ../src/test_parser.nit:58,10
+                                identifier 'args' ... ../src/test_parser.nit:58,10--13
+                                ../src/test_parser.nit:58,10
+                              identifier 'first' ... ../src/test_parser.nit:58,15--19
+                              ../src/test_parser.nit:58,10
+                            ../src/test_parser.nit:58,24--27
+                              literal value '"-h"' ... ../src/test_parser.nit:58,24--27
+                          ../src/test_parser.nit:58,32--49
+                            ../src/test_parser.nit:58,32--41
+                              ../src/test_parser.nit:58,32--35
+                                ../src/test_parser.nit:58,32
+                                identifier 'args' ... ../src/test_parser.nit:58,32--35
+                                ../src/test_parser.nit:58,32
+                              identifier 'first' ... ../src/test_parser.nit:58,37--41
+                              ../src/test_parser.nit:58,32
+                            ../src/test_parser.nit:58,46--49
+                              literal value '"-?"' ... ../src/test_parser.nit:58,46--49
+                        ../src/test_parser.nit:59,3--18
+                          ../src/test_parser.nit:59,3--18
+                            ../src/test_parser.nit:59,15
+                            identifier 'need_help' ... ../src/test_parser.nit:59,3--11
+                            ../src/test_parser.nit:59,15
+                            '=' ... ../src/test_parser.nit:59,13
+                            ../src/test_parser.nit:59,15--18
+                              keyword 'true' ... ../src/test_parser.nit:59,15--18
+                        ../src/test_parser.nit:61,3--63,4
+                          ../src/test_parser.nit:61,3--48
+                            ../src/test_parser.nit:61,3--8
+                              ../src/test_parser.nit:61,3
+                              identifier 'stderr' ... ../src/test_parser.nit:61,3--8
+                              ../src/test_parser.nit:61,3
+                            identifier 'write' ... ../src/test_parser.nit:61,10--14
+                            ../src/test_parser.nit:61,15--48
+                              '(' ... ../src/test_parser.nit:61,15
+                              ../src/test_parser.nit:61,16--47
+                                ../src/test_parser.nit:61,16--32
+                                  literal value '"Unknown option {' ... ../src/test_parser.nit:61,16--32
+                                ../src/test_parser.nit:61,33--42
+                                  ../src/test_parser.nit:61,33--36
+                                    ../src/test_parser.nit:61,33
+                                    identifier 'args' ... ../src/test_parser.nit:61,33--36
+                                    ../src/test_parser.nit:61,33
+                                  identifier 'first' ... ../src/test_parser.nit:61,38--42
+                                  ../src/test_parser.nit:61,33
+                                ../src/test_parser.nit:61,43--47
+                                  '}.\n"' ... ../src/test_parser.nit:61,43--47
+                              ')' ... ../src/test_parser.nit:61,48
+                          ../src/test_parser.nit:62,3--9
+                            ../src/test_parser.nit:62,8
+                            identifier 'exit' ... ../src/test_parser.nit:62,3--6
+                            ../src/test_parser.nit:62,7--9
+                              '(' ... ../src/test_parser.nit:62,7
+                              ../src/test_parser.nit:62,8
+                                literal value '0' ... ../src/test_parser.nit:62,8
+                              ')' ... ../src/test_parser.nit:62,9
+                          keyword 'end' ... ../src/test_parser.nit:63,2--4
+              ../src/test_parser.nit:64,2--11
+                ../src/test_parser.nit:64,2--5
+                  ../src/test_parser.nit:64,2
+                  identifier 'args' ... ../src/test_parser.nit:64,2--5
+                  ../src/test_parser.nit:64,2
+                identifier 'shift' ... ../src/test_parser.nit:64,7--11
+                ../src/test_parser.nit:64,2
+              keyword 'end' ... ../src/test_parser.nit:65,1--3
+          ../src/test_parser.nit:67,1--110,3
+            keyword 'if' ... ../src/test_parser.nit:67,1--2
+            ../src/test_parser.nit:67,4--29
+              ../src/test_parser.nit:67,4--16
+                ../src/test_parser.nit:67,4--7
+                  ../src/test_parser.nit:67,4
+                  identifier 'args' ... ../src/test_parser.nit:67,4--7
+                  ../src/test_parser.nit:67,4
+                identifier 'is_empty' ... ../src/test_parser.nit:67,9--16
+                ../src/test_parser.nit:67,4
+              ../src/test_parser.nit:67,21--29
+                ../src/test_parser.nit:67,21
+                identifier 'need_help' ... ../src/test_parser.nit:67,21--29
+                ../src/test_parser.nit:67,21
+            ../src/test_parser.nit:68,2--75,30
+              ../src/test_parser.nit:68,2--16
                 ../src/test_parser.nit:68,8
                 identifier 'print' ... ../src/test_parser.nit:68,2--6
-                ../src/test_parser.nit:68,7--36
+                ../src/test_parser.nit:68,7--16
                   '(' ... ../src/test_parser.nit:68,7
-                  ../src/test_parser.nit:68,8--35
-                    literal value '"  -n       do not print anything"' ... ../src/test_parser.nit:68,8--35
-                  ')' ... ../src/test_parser.nit:68,36
-              ../src/test_parser.nit:69,2--25
+                  ../src/test_parser.nit:68,8--15
+                    literal value '"usage:"' ... ../src/test_parser.nit:68,8--15
+                  ')' ... ../src/test_parser.nit:68,16
+              ../src/test_parser.nit:69,2--54
                 ../src/test_parser.nit:69,8
                 identifier 'print' ... ../src/test_parser.nit:69,2--6
-                ../src/test_parser.nit:69,7--25
+                ../src/test_parser.nit:69,7--54
                   '(' ... ../src/test_parser.nit:69,7
-                  ../src/test_parser.nit:69,8--24
-                    literal value '"  -l       only lexer"' ... ../src/test_parser.nit:69,8--24
-                  ')' ... ../src/test_parser.nit:69,25
-              ../src/test_parser.nit:70,2--41
+                  ../src/test_parser.nit:69,8--53
+                    literal value '"  test_parser [options]... <filename.nit>..."' ... ../src/test_parser.nit:69,8--53
+                  ')' ... ../src/test_parser.nit:69,54
+              ../src/test_parser.nit:70,2--18
                 ../src/test_parser.nit:70,8
                 identifier 'print' ... ../src/test_parser.nit:70,2--6
-                ../src/test_parser.nit:70,7--41
+                ../src/test_parser.nit:70,7--18
                   '(' ... ../src/test_parser.nit:70,7
-                  ../src/test_parser.nit:70,8--40
-                    literal value '"  -p       lexer and parser (default)"' ... ../src/test_parser.nit:70,8--40
-                  ')' ... ../src/test_parser.nit:70,41
-              ../src/test_parser.nit:71,2--30
+                  ../src/test_parser.nit:70,8--17
+                    literal value '"options:"' ... ../src/test_parser.nit:70,8--17
+                  ')' ... ../src/test_parser.nit:70,18
+              ../src/test_parser.nit:71,2--36
                 ../src/test_parser.nit:71,8
                 identifier 'print' ... ../src/test_parser.nit:71,2--6
-                ../src/test_parser.nit:71,7--30
+                ../src/test_parser.nit:71,7--36
                   '(' ... ../src/test_parser.nit:71,7
-                  ../src/test_parser.nit:71,8--29
-                    literal value '"  -h       print this help"' ... ../src/test_parser.nit:71,8--29
-                  ')' ... ../src/test_parser.nit:71,30
-            ../src/test_parser.nit:73,2--101,3
-              ../src/test_parser.nit:73,2--100,4
-                keyword 'for' ... ../src/test_parser.nit:73,2--4
-                identifier 'a' ... ../src/test_parser.nit:73,6
-                ../src/test_parser.nit:73,11--14
-                  ../src/test_parser.nit:73,11
-                  identifier 'args' ... ../src/test_parser.nit:73,11--14
-                  ../src/test_parser.nit:73,11
-                keyword 'do' ... ../src/test_parser.nit:73,16--17
-                ../src/test_parser.nit:74,3--100,4
-                  ../src/test_parser.nit:74,3--30
-                    keyword 'var' ... ../src/test_parser.nit:74,3--5
-                    identifier 'f' ... ../src/test_parser.nit:74,7
-                    '=' ... ../src/test_parser.nit:74,9
-                    ../src/test_parser.nit:74,11--30
-                      keyword 'new' ... ../src/test_parser.nit:74,11--13
-                      ../src/test_parser.nit:74,15--22
-                        type identifier 'IFStream' ... ../src/test_parser.nit:74,15--22
-                      identifier 'open' ... ../src/test_parser.nit:74,24--27
-                      ../src/test_parser.nit:74,28--30
-                        '(' ... ../src/test_parser.nit:74,28
-                        ../src/test_parser.nit:74,29
-                          ../src/test_parser.nit:74,29
-                          identifier 'a' ... ../src/test_parser.nit:74,29
-                          ../src/test_parser.nit:74,29
-                        ')' ... ../src/test_parser.nit:74,30
-                  ../src/test_parser.nit:75,3--45
-                    keyword 'var' ... ../src/test_parser.nit:75,3--5
-                    identifier 'lexer' ... ../src/test_parser.nit:75,7--11
-                    '=' ... ../src/test_parser.nit:75,13
-                    ../src/test_parser.nit:75,15--45
-                      keyword 'new' ... ../src/test_parser.nit:75,15--17
-                      ../src/test_parser.nit:75,19--23
-                        type identifier 'Lexer' ... ../src/test_parser.nit:75,19--23
-                      ../src/test_parser.nit:75,24--45
-                        '(' ... ../src/test_parser.nit:75,24
-                        ../src/test_parser.nit:75,25--44
-                          keyword 'new' ... ../src/test_parser.nit:75,25--27
-                          ../src/test_parser.nit:75,29--38
-                            type identifier 'SourceFile' ... ../src/test_parser.nit:75,29--38
-                          ../src/test_parser.nit:75,39--44
-                            '(' ... ../src/test_parser.nit:75,39
-                            ../src/test_parser.nit:75,40
-                              ../src/test_parser.nit:75,40
-                              identifier 'a' ... ../src/test_parser.nit:75,40
-                              ../src/test_parser.nit:75,40
-                            ../src/test_parser.nit:75,43
-                              ../src/test_parser.nit:75,43
-                              identifier 'f' ... ../src/test_parser.nit:75,43
-                              ../src/test_parser.nit:75,43
-                            ')' ... ../src/test_parser.nit:75,44
-                        ')' ... ../src/test_parser.nit:75,45
-                  ../src/test_parser.nit:76,3--99,5
-                    keyword 'if' ... ../src/test_parser.nit:76,3--4
-                    ../src/test_parser.nit:76,6--15
-                      ../src/test_parser.nit:76,6
-                      identifier 'only_lexer' ... ../src/test_parser.nit:76,6--15
-                      ../src/test_parser.nit:76,6
-                    ../src/test_parser.nit:77,4--84,10
-                      ../src/test_parser.nit:77,4--25
-                        keyword 'var' ... ../src/test_parser.nit:77,4--6
-                        identifier 'token' ... ../src/test_parser.nit:77,8--12
-                        '=' ... ../src/test_parser.nit:77,14
-                        ../src/test_parser.nit:77,16--25
-                          ../src/test_parser.nit:77,16--20
-                            ../src/test_parser.nit:77,16
-                            identifier 'lexer' ... ../src/test_parser.nit:77,16--20
-                            ../src/test_parser.nit:77,16
-                          identifier 'next' ... ../src/test_parser.nit:77,22--25
-                          ../src/test_parser.nit:77,16
-                      ../src/test_parser.nit:78,4--83,6
-                        keyword 'while' ... ../src/test_parser.nit:78,4--8
-                        ../src/test_parser.nit:78,10--26
-                          keyword 'not' ... ../src/test_parser.nit:78,10--12
-                          ../src/test_parser.nit:78,14--26
-                            ../src/test_parser.nit:78,14--18
-                              ../src/test_parser.nit:78,14
-                              identifier 'token' ... ../src/test_parser.nit:78,14--18
-                              ../src/test_parser.nit:78,14
-                            ../src/test_parser.nit:78,24--26
-                              type identifier 'EOF' ... ../src/test_parser.nit:78,24--26
-                        keyword 'do' ... ../src/test_parser.nit:78,28--29
-                        ../src/test_parser.nit:79,5--83,6
-                          ../src/test_parser.nit:79,5--81,7
-                            keyword 'if' ... ../src/test_parser.nit:79,5--6
-                            ../src/test_parser.nit:79,8--19
-                              keyword 'not' ... ../src/test_parser.nit:79,8--10
-                              ../src/test_parser.nit:79,12--19
-                                ../src/test_parser.nit:79,12
-                                identifier 'no_print' ... ../src/test_parser.nit:79,12--19
-                                ../src/test_parser.nit:79,12
-                            ../src/test_parser.nit:80,6--64
-                              ../src/test_parser.nit:80,6--64
-                                ../src/test_parser.nit:80,12
-                                identifier 'print' ... ../src/test_parser.nit:80,6--10
-                                ../src/test_parser.nit:80,11--64
-                                  '(' ... ../src/test_parser.nit:80,11
-                                  ../src/test_parser.nit:80,12--63
-                                    ../src/test_parser.nit:80,12--27
-                                      literal value '"Read token at {' ... ../src/test_parser.nit:80,12--27
-                                    ../src/test_parser.nit:80,28--41
-                                      ../src/test_parser.nit:80,28--32
-                                        ../src/test_parser.nit:80,28
-                                        identifier 'token' ... ../src/test_parser.nit:80,28--32
-                                        ../src/test_parser.nit:80,28
-                                      identifier 'location' ... ../src/test_parser.nit:80,34--41
-                                      ../src/test_parser.nit:80,28
-                                    ../src/test_parser.nit:80,42--50
-                                      literal value '} text='{' ... ../src/test_parser.nit:80,42--50
-                                    ../src/test_parser.nit:80,51--60
-                                      ../src/test_parser.nit:80,51--55
-                                        ../src/test_parser.nit:80,51
-                                        identifier 'token' ... ../src/test_parser.nit:80,51--55
-                                        ../src/test_parser.nit:80,51
-                                      identifier 'text' ... ../src/test_parser.nit:80,57--60
-                                      ../src/test_parser.nit:80,51
-                                    ../src/test_parser.nit:80,61--63
-                                      '}'"' ... ../src/test_parser.nit:80,61--63
-                                  ')' ... ../src/test_parser.nit:80,64
-                            ../src/test_parser.nit:81,5--7
-                              keyword 'end' ... ../src/test_parser.nit:81,5--7
-                          ../src/test_parser.nit:82,5--22
-                            ../src/test_parser.nit:82,13
-                            identifier 'token' ... ../src/test_parser.nit:82,5--9
-                            ../src/test_parser.nit:82,13
-                            '=' ... ../src/test_parser.nit:82,11
-                            ../src/test_parser.nit:82,13--22
-                              ../src/test_parser.nit:82,13--17
-                                ../src/test_parser.nit:82,13
-                                identifier 'lexer' ... ../src/test_parser.nit:82,13--17
-                                ../src/test_parser.nit:82,13
-                              identifier 'next' ... ../src/test_parser.nit:82,19--22
-                              ../src/test_parser.nit:82,13
-                          keyword 'end' ... ../src/test_parser.nit:83,4--6
+                  ../src/test_parser.nit:71,8--35
+                    literal value '"  -n       do not print anything"' ... ../src/test_parser.nit:71,8--35
+                  ')' ... ../src/test_parser.nit:71,36
+              ../src/test_parser.nit:72,2--25
+                ../src/test_parser.nit:72,8
+                identifier 'print' ... ../src/test_parser.nit:72,2--6
+                ../src/test_parser.nit:72,7--25
+                  '(' ... ../src/test_parser.nit:72,7
+                  ../src/test_parser.nit:72,8--24
+                    literal value '"  -l       only lexer"' ... ../src/test_parser.nit:72,8--24
+                  ')' ... ../src/test_parser.nit:72,25
+              ../src/test_parser.nit:73,2--41
+                ../src/test_parser.nit:73,8
+                identifier 'print' ... ../src/test_parser.nit:73,2--6
+                ../src/test_parser.nit:73,7--41
+                  '(' ... ../src/test_parser.nit:73,7
+                  ../src/test_parser.nit:73,8--40
+                    literal value '"  -p       lexer and parser (default)"' ... ../src/test_parser.nit:73,8--40
+                  ')' ... ../src/test_parser.nit:73,41
+              ../src/test_parser.nit:74,2--68
+                ../src/test_parser.nit:74,8
+                identifier 'print' ... ../src/test_parser.nit:74,2--6
+                ../src/test_parser.nit:74,7--68
+                  '(' ... ../src/test_parser.nit:74,7
+                  ../src/test_parser.nit:74,8--67
+                    literal value '"  -e       instead on files, each argument is a content to parse"' ... ../src/test_parser.nit:74,8--67
+                  ')' ... ../src/test_parser.nit:74,68
+              ../src/test_parser.nit:75,2--30
+                ../src/test_parser.nit:75,8
+                identifier 'print' ... ../src/test_parser.nit:75,2--6
+                ../src/test_parser.nit:75,7--30
+                  '(' ... ../src/test_parser.nit:75,7
+                  ../src/test_parser.nit:75,8--29
+                    literal value '"  -h       print this help"' ... ../src/test_parser.nit:75,8--29
+                  ')' ... ../src/test_parser.nit:75,30
+            ../src/test_parser.nit:77,2--110,3
+              ../src/test_parser.nit:77,2--109,4
+                keyword 'for' ... ../src/test_parser.nit:77,2--4
+                identifier 'a' ... ../src/test_parser.nit:77,6
+                ../src/test_parser.nit:77,11--14
+                  ../src/test_parser.nit:77,11
+                  identifier 'args' ... ../src/test_parser.nit:77,11--14
+                  ../src/test_parser.nit:77,11
+                keyword 'do' ... ../src/test_parser.nit:77,16--17
+                ../src/test_parser.nit:78,3--109,4
+                  ../src/test_parser.nit:78,3--12
+                    keyword 'var' ... ../src/test_parser.nit:78,3--5
+                    identifier 'source' ... ../src/test_parser.nit:78,7--12
+                  ../src/test_parser.nit:79,3--85,5
+                    keyword 'if' ... ../src/test_parser.nit:79,3--4
+                    ../src/test_parser.nit:79,6--12
+                      ../src/test_parser.nit:79,6
+                      identifier 'no_file' ... ../src/test_parser.nit:79,6--12
+                      ../src/test_parser.nit:79,6
+                    ../src/test_parser.nit:80,4--45
+                      ../src/test_parser.nit:80,4--45
+                        ../src/test_parser.nit:80,17
+                        identifier 'source' ... ../src/test_parser.nit:80,4--9
+                        ../src/test_parser.nit:80,17
+                        '=' ... ../src/test_parser.nit:80,11
+                        ../src/test_parser.nit:80,13--45
+                          keyword 'new' ... ../src/test_parser.nit:80,13--15
+                          ../src/test_parser.nit:80,17--26
+                            type identifier 'SourceFile' ... ../src/test_parser.nit:80,17--26
+                          identifier 'from_string' ... ../src/test_parser.nit:80,28--38
+                          ../src/test_parser.nit:80,39--45
+                            '(' ... ../src/test_parser.nit:80,39
+                            ../src/test_parser.nit:80,40--41
+                              literal value '""' ... ../src/test_parser.nit:80,40--41
+                            ../src/test_parser.nit:80,44
+                              ../src/test_parser.nit:80,44
+                              identifier 'a' ... ../src/test_parser.nit:80,44
+                              ../src/test_parser.nit:80,44
+                            ')' ... ../src/test_parser.nit:80,45
+                    ../src/test_parser.nit:82,4--85,5
+                      ../src/test_parser.nit:82,4--31
+                        keyword 'var' ... ../src/test_parser.nit:82,4--6
+                        identifier 'f' ... ../src/test_parser.nit:82,8
+                        '=' ... ../src/test_parser.nit:82,10
+                        ../src/test_parser.nit:82,12--31
+                          keyword 'new' ... ../src/test_parser.nit:82,12--14
+                          ../src/test_parser.nit:82,16--23
+                            type identifier 'IFStream' ... ../src/test_parser.nit:82,16--23
+                          identifier 'open' ... ../src/test_parser.nit:82,25--28
+                          ../src/test_parser.nit:82,29--31
+                            '(' ... ../src/test_parser.nit:82,29
+                            ../src/test_parser.nit:82,30
+                              ../src/test_parser.nit:82,30
+                              identifier 'a' ... ../src/test_parser.nit:82,30
+                              ../src/test_parser.nit:82,30
+                            ')' ... ../src/test_parser.nit:82,31
+                      ../src/test_parser.nit:83,4--32
+                        ../src/test_parser.nit:83,17
+                        identifier 'source' ... ../src/test_parser.nit:83,4--9
+                        ../src/test_parser.nit:83,17
+                        '=' ... ../src/test_parser.nit:83,11
+                        ../src/test_parser.nit:83,13--32
+                          keyword 'new' ... ../src/test_parser.nit:83,13--15
+                          ../src/test_parser.nit:83,17--26
+                            type identifier 'SourceFile' ... ../src/test_parser.nit:83,17--26
+                          ../src/test_parser.nit:83,27--32
+                            '(' ... ../src/test_parser.nit:83,27
+                            ../src/test_parser.nit:83,28
+                              ../src/test_parser.nit:83,28
+                              identifier 'a' ... ../src/test_parser.nit:83,28
+                              ../src/test_parser.nit:83,28
+                            ../src/test_parser.nit:83,31
+                              ../src/test_parser.nit:83,31
+                              identifier 'f' ... ../src/test_parser.nit:83,31
+                              ../src/test_parser.nit:83,31
+                            ')' ... ../src/test_parser.nit:83,32
                       ../src/test_parser.nit:84,4--10
                         ../src/test_parser.nit:84,4
                           ../src/test_parser.nit:84,4
                           ../src/test_parser.nit:84,4
                         identifier 'close' ... ../src/test_parser.nit:84,6--10
                         ../src/test_parser.nit:84,4
-                    ../src/test_parser.nit:86,4--99,5
-                      ../src/test_parser.nit:86,4--33
-                        keyword 'var' ... ../src/test_parser.nit:86,4--6
-                        identifier 'parser' ... ../src/test_parser.nit:86,8--13
-                        '=' ... ../src/test_parser.nit:86,15
-                        ../src/test_parser.nit:86,17--33
-                          keyword 'new' ... ../src/test_parser.nit:86,17--19
-                          ../src/test_parser.nit:86,21--26
-                            type identifier 'Parser' ... ../src/test_parser.nit:86,21--26
-                          ../src/test_parser.nit:86,27--33
-                            '(' ... ../src/test_parser.nit:86,27
-                            ../src/test_parser.nit:86,28--32
-                              ../src/test_parser.nit:86,28
-                              identifier 'lexer' ... ../src/test_parser.nit:86,28--32
-                              ../src/test_parser.nit:86,28
-                            ')' ... ../src/test_parser.nit:86,33
-                      ../src/test_parser.nit:87,4--26
-                        keyword 'var' ... ../src/test_parser.nit:87,4--6
-                        identifier 'tree' ... ../src/test_parser.nit:87,8--11
-                        '=' ... ../src/test_parser.nit:87,13
-                        ../src/test_parser.nit:87,15--26
-                          ../src/test_parser.nit:87,15--20
-                            ../src/test_parser.nit:87,15
-                            identifier 'parser' ... ../src/test_parser.nit:87,15--20
-                            ../src/test_parser.nit:87,15
-                          identifier 'parse' ... ../src/test_parser.nit:87,22--26
-                          ../src/test_parser.nit:87,15
-                      ../src/test_parser.nit:88,4--10
-                        ../src/test_parser.nit:88,4
-                          ../src/test_parser.nit:88,4
-                          identifier 'f' ... ../src/test_parser.nit:88,4
-                          ../src/test_parser.nit:88,4
-                        identifier 'close' ... ../src/test_parser.nit:88,6--10
-                        ../src/test_parser.nit:88,4
-                      ../src/test_parser.nit:90,4--25
-                        keyword 'var' ... ../src/test_parser.nit:90,4--6
-                        identifier 'error' ... ../src/test_parser.nit:90,8--12
-                        '=' ... ../src/test_parser.nit:90,14
-                        ../src/test_parser.nit:90,16--25
-                          ../src/test_parser.nit:90,16--19
-                            ../src/test_parser.nit:90,16
-                            identifier 'tree' ... ../src/test_parser.nit:90,16--19
-                            ../src/test_parser.nit:90,16
-                          identifier 'n_eof' ... ../src/test_parser.nit:90,21--25
-                          ../src/test_parser.nit:90,16
-                      ../src/test_parser.nit:91,4--94,6
-                        keyword 'if' ... ../src/test_parser.nit:91,4--5
-                        ../src/test_parser.nit:91,7--22
-                          ../src/test_parser.nit:91,7--11
-                            ../src/test_parser.nit:91,7
-                            identifier 'error' ... ../src/test_parser.nit:91,7--11
-                            ../src/test_parser.nit:91,7
-                          ../src/test_parser.nit:91,17--22
-                            type identifier 'AError' ... ../src/test_parser.nit:91,17--22
-                        ../src/test_parser.nit:92,5--93,10
-                          ../src/test_parser.nit:92,5--58
-                            ../src/test_parser.nit:92,11
-                            identifier 'print' ... ../src/test_parser.nit:92,5--9
-                            ../src/test_parser.nit:92,10--58
-                              '(' ... ../src/test_parser.nit:92,10
-                              ../src/test_parser.nit:92,11--57
-                                ../src/test_parser.nit:92,11--21
-                                  literal value '"Error at {' ... ../src/test_parser.nit:92,11--21
-                                ../src/test_parser.nit:92,22--35
-                                  ../src/test_parser.nit:92,22--26
-                                    ../src/test_parser.nit:92,22
-                                    identifier 'error' ... ../src/test_parser.nit:92,22--26
-                                    ../src/test_parser.nit:92,22
-                                  identifier 'location' ... ../src/test_parser.nit:92,28--35
-                                  ../src/test_parser.nit:92,22
-                                ../src/test_parser.nit:92,36--42
-                                  literal value '}:\n\t{' ... ../src/test_parser.nit:92,36--42
-                                ../src/test_parser.nit:92,43--55
-                                  ../src/test_parser.nit:92,43--47
-                                    ../src/test_parser.nit:92,43
-                                    identifier 'error' ... ../src/test_parser.nit:92,43--47
-                                    ../src/test_parser.nit:92,43
-                                  identifier 'message' ... ../src/test_parser.nit:92,49--55
-                                  ../src/test_parser.nit:92,43
-                                ../src/test_parser.nit:92,56--57
-                                  '}"' ... ../src/test_parser.nit:92,56--57
-                              ')' ... ../src/test_parser.nit:92,58
-                          ../src/test_parser.nit:93,5--10
-                            keyword 'return' ... ../src/test_parser.nit:93,5--10
-                        ../src/test_parser.nit:94,4--6
+                      keyword 'end' ... ../src/test_parser.nit:85,3--5
+                  ../src/test_parser.nit:86,3--31
+                    keyword 'var' ... ../src/test_parser.nit:86,3--5
+                    identifier 'lexer' ... ../src/test_parser.nit:86,7--11
+                    '=' ... ../src/test_parser.nit:86,13
+                    ../src/test_parser.nit:86,15--31
+                      keyword 'new' ... ../src/test_parser.nit:86,15--17
+                      ../src/test_parser.nit:86,19--23
+                        type identifier 'Lexer' ... ../src/test_parser.nit:86,19--23
+                      ../src/test_parser.nit:86,24--31
+                        '(' ... ../src/test_parser.nit:86,24
+                        ../src/test_parser.nit:86,25--30
+                          ../src/test_parser.nit:86,25
+                          identifier 'source' ... ../src/test_parser.nit:86,25--30
+                          ../src/test_parser.nit:86,25
+                        ')' ... ../src/test_parser.nit:86,31
+                  ../src/test_parser.nit:87,3--108,5
+                    keyword 'if' ... ../src/test_parser.nit:87,3--4
+                    ../src/test_parser.nit:87,6--15
+                      ../src/test_parser.nit:87,6
+                      identifier 'only_lexer' ... ../src/test_parser.nit:87,6--15
+                      ../src/test_parser.nit:87,6
+                    ../src/test_parser.nit:88,4--94,6
+                      ../src/test_parser.nit:88,4--25
+                        keyword 'var' ... ../src/test_parser.nit:88,4--6
+                        identifier 'token' ... ../src/test_parser.nit:88,8--12
+                        '=' ... ../src/test_parser.nit:88,14
+                        ../src/test_parser.nit:88,16--25
+                          ../src/test_parser.nit:88,16--20
+                            ../src/test_parser.nit:88,16
+                            identifier 'lexer' ... ../src/test_parser.nit:88,16--20
+                            ../src/test_parser.nit:88,16
+                          identifier 'next' ... ../src/test_parser.nit:88,22--25
+                          ../src/test_parser.nit:88,16
+                      ../src/test_parser.nit:89,4--94,6
+                        keyword 'while' ... ../src/test_parser.nit:89,4--8
+                        ../src/test_parser.nit:89,10--26
+                          keyword 'not' ... ../src/test_parser.nit:89,10--12
+                          ../src/test_parser.nit:89,14--26
+                            ../src/test_parser.nit:89,14--18
+                              ../src/test_parser.nit:89,14
+                              identifier 'token' ... ../src/test_parser.nit:89,14--18
+                              ../src/test_parser.nit:89,14
+                            ../src/test_parser.nit:89,24--26
+                              type identifier 'EOF' ... ../src/test_parser.nit:89,24--26
+                        keyword 'do' ... ../src/test_parser.nit:89,28--29
+                        ../src/test_parser.nit:90,5--94,6
+                          ../src/test_parser.nit:90,5--92,7
+                            keyword 'if' ... ../src/test_parser.nit:90,5--6
+                            ../src/test_parser.nit:90,8--19
+                              keyword 'not' ... ../src/test_parser.nit:90,8--10
+                              ../src/test_parser.nit:90,12--19
+                                ../src/test_parser.nit:90,12
+                                identifier 'no_print' ... ../src/test_parser.nit:90,12--19
+                                ../src/test_parser.nit:90,12
+                            ../src/test_parser.nit:91,6--64
+                              ../src/test_parser.nit:91,6--64
+                                ../src/test_parser.nit:91,12
+                                identifier 'print' ... ../src/test_parser.nit:91,6--10
+                                ../src/test_parser.nit:91,11--64
+                                  '(' ... ../src/test_parser.nit:91,11
+                                  ../src/test_parser.nit:91,12--63
+                                    ../src/test_parser.nit:91,12--27
+                                      literal value '"Read token at {' ... ../src/test_parser.nit:91,12--27
+                                    ../src/test_parser.nit:91,28--41
+                                      ../src/test_parser.nit:91,28--32
+                                        ../src/test_parser.nit:91,28
+                                        identifier 'token' ... ../src/test_parser.nit:91,28--32
+                                        ../src/test_parser.nit:91,28
+                                      identifier 'location' ... ../src/test_parser.nit:91,34--41
+                                      ../src/test_parser.nit:91,28
+                                    ../src/test_parser.nit:91,42--50
+                                      literal value '} text='{' ... ../src/test_parser.nit:91,42--50
+                                    ../src/test_parser.nit:91,51--60
+                                      ../src/test_parser.nit:91,51--55
+                                        ../src/test_parser.nit:91,51
+                                        identifier 'token' ... ../src/test_parser.nit:91,51--55
+                                        ../src/test_parser.nit:91,51
+                                      identifier 'text' ... ../src/test_parser.nit:91,57--60
+                                      ../src/test_parser.nit:91,51
+                                    ../src/test_parser.nit:91,61--63
+                                      '}'"' ... ../src/test_parser.nit:91,61--63
+                                  ')' ... ../src/test_parser.nit:91,64
+                            ../src/test_parser.nit:92,5--7
+                              keyword 'end' ... ../src/test_parser.nit:92,5--7
+                          ../src/test_parser.nit:93,5--22
+                            ../src/test_parser.nit:93,13
+                            identifier 'token' ... ../src/test_parser.nit:93,5--9
+                            ../src/test_parser.nit:93,13
+                            '=' ... ../src/test_parser.nit:93,11
+                            ../src/test_parser.nit:93,13--22
+                              ../src/test_parser.nit:93,13--17
+                                ../src/test_parser.nit:93,13
+                                identifier 'lexer' ... ../src/test_parser.nit:93,13--17
+                                ../src/test_parser.nit:93,13
+                              identifier 'next' ... ../src/test_parser.nit:93,19--22
+                              ../src/test_parser.nit:93,13
                           keyword 'end' ... ../src/test_parser.nit:94,4--6
-                      ../src/test_parser.nit:96,4--98,6
-                        keyword 'if' ... ../src/test_parser.nit:96,4--5
-                        ../src/test_parser.nit:96,7--18
-                          keyword 'not' ... ../src/test_parser.nit:96,7--9
-                          ../src/test_parser.nit:96,11--18
-                            ../src/test_parser.nit:96,11
-                            identifier 'no_print' ... ../src/test_parser.nit:96,11--18
-                            ../src/test_parser.nit:96,11
-                        ../src/test_parser.nit:97,5--44
-                          ../src/test_parser.nit:97,5--44
-                            ../src/test_parser.nit:97,5--26
-                              '(' ... ../src/test_parser.nit:97,5
-                              ../src/test_parser.nit:97,6--25
-                                keyword 'new' ... ../src/test_parser.nit:97,6--8
-                                ../src/test_parser.nit:97,10--25
-                                  type identifier 'PrintTreeVisitor' ... ../src/test_parser.nit:97,10--25
-                                ../src/test_parser.nit:97,6
-                              ')' ... ../src/test_parser.nit:97,26
-                            identifier 'enter_visit' ... ../src/test_parser.nit:97,28--38
-                            ../src/test_parser.nit:97,39--44
-                              '(' ... ../src/test_parser.nit:97,39
-                              ../src/test_parser.nit:97,40--43
-                                ../src/test_parser.nit:97,40
-                                identifier 'tree' ... ../src/test_parser.nit:97,40--43
-                                ../src/test_parser.nit:97,40
-                              ')' ... ../src/test_parser.nit:97,44
-                        ../src/test_parser.nit:98,4--6
-                          keyword 'end' ... ../src/test_parser.nit:98,4--6
-                      keyword 'end' ... ../src/test_parser.nit:99,3--5
-                  keyword 'end' ... ../src/test_parser.nit:100,2--4
-              keyword 'end' ... ../src/test_parser.nit:101,1--3
-  end of file ... ../src/test_parser.nit:102,1
+                    ../src/test_parser.nit:96,4--108,5
+                      ../src/test_parser.nit:96,4--33
+                        keyword 'var' ... ../src/test_parser.nit:96,4--6
+                        identifier 'parser' ... ../src/test_parser.nit:96,8--13
+                        '=' ... ../src/test_parser.nit:96,15
+                        ../src/test_parser.nit:96,17--33
+                          keyword 'new' ... ../src/test_parser.nit:96,17--19
+                          ../src/test_parser.nit:96,21--26
+                            type identifier 'Parser' ... ../src/test_parser.nit:96,21--26
+                          ../src/test_parser.nit:96,27--33
+                            '(' ... ../src/test_parser.nit:96,27
+                            ../src/test_parser.nit:96,28--32
+                              ../src/test_parser.nit:96,28
+                              identifier 'lexer' ... ../src/test_parser.nit:96,28--32
+                              ../src/test_parser.nit:96,28
+                            ')' ... ../src/test_parser.nit:96,33
+                      ../src/test_parser.nit:97,4--26
+                        keyword 'var' ... ../src/test_parser.nit:97,4--6
+                        identifier 'tree' ... ../src/test_parser.nit:97,8--11
+                        '=' ... ../src/test_parser.nit:97,13
+                        ../src/test_parser.nit:97,15--26
+                          ../src/test_parser.nit:97,15--20
+                            ../src/test_parser.nit:97,15
+                            identifier 'parser' ... ../src/test_parser.nit:97,15--20
+                            ../src/test_parser.nit:97,15
+                          identifier 'parse' ... ../src/test_parser.nit:97,22--26
+                          ../src/test_parser.nit:97,15
+                      ../src/test_parser.nit:99,4--25
+                        keyword 'var' ... ../src/test_parser.nit:99,4--6
+                        identifier 'error' ... ../src/test_parser.nit:99,8--12
+                        '=' ... ../src/test_parser.nit:99,14
+                        ../src/test_parser.nit:99,16--25
+                          ../src/test_parser.nit:99,16--19
+                            ../src/test_parser.nit:99,16
+                            identifier 'tree' ... ../src/test_parser.nit:99,16--19
+                            ../src/test_parser.nit:99,16
+                          identifier 'n_eof' ... ../src/test_parser.nit:99,21--25
+                          ../src/test_parser.nit:99,16
+                      ../src/test_parser.nit:100,4--103,6
+                        keyword 'if' ... ../src/test_parser.nit:100,4--5
+                        ../src/test_parser.nit:100,7--22
+                          ../src/test_parser.nit:100,7--11
+                            ../src/test_parser.nit:100,7
+                            identifier 'error' ... ../src/test_parser.nit:100,7--11
+                            ../src/test_parser.nit:100,7
+                          ../src/test_parser.nit:100,17--22
+                            type identifier 'AError' ... ../src/test_parser.nit:100,17--22
+                        ../src/test_parser.nit:101,5--102,10
+                          ../src/test_parser.nit:101,5--58
+                            ../src/test_parser.nit:101,11
+                            identifier 'print' ... ../src/test_parser.nit:101,5--9
+                            ../src/test_parser.nit:101,10--58
+                              '(' ... ../src/test_parser.nit:101,10
+                              ../src/test_parser.nit:101,11--57
+                                ../src/test_parser.nit:101,11--21
+                                  literal value '"Error at {' ... ../src/test_parser.nit:101,11--21
+                                ../src/test_parser.nit:101,22--35
+                                  ../src/test_parser.nit:101,22--26
+                                    ../src/test_parser.nit:101,22
+                                    identifier 'error' ... ../src/test_parser.nit:101,22--26
+                                    ../src/test_parser.nit:101,22
+                                  identifier 'location' ... ../src/test_parser.nit:101,28--35
+                                  ../src/test_parser.nit:101,22
+                                ../src/test_parser.nit:101,36--42
+                                  literal value '}:\n\t{' ... ../src/test_parser.nit:101,36--42
+                                ../src/test_parser.nit:101,43--55
+                                  ../src/test_parser.nit:101,43--47
+                                    ../src/test_parser.nit:101,43
+                                    identifier 'error' ... ../src/test_parser.nit:101,43--47
+                                    ../src/test_parser.nit:101,43
+                                  identifier 'message' ... ../src/test_parser.nit:101,49--55
+                                  ../src/test_parser.nit:101,43
+                                ../src/test_parser.nit:101,56--57
+                                  '}"' ... ../src/test_parser.nit:101,56--57
+                              ')' ... ../src/test_parser.nit:101,58
+                          ../src/test_parser.nit:102,5--10
+                            keyword 'return' ... ../src/test_parser.nit:102,5--10
+                        ../src/test_parser.nit:103,4--6
+                          keyword 'end' ... ../src/test_parser.nit:103,4--6
+                      ../src/test_parser.nit:105,4--107,6
+                        keyword 'if' ... ../src/test_parser.nit:105,4--5
+                        ../src/test_parser.nit:105,7--18
+                          keyword 'not' ... ../src/test_parser.nit:105,7--9
+                          ../src/test_parser.nit:105,11--18
+                            ../src/test_parser.nit:105,11
+                            identifier 'no_print' ... ../src/test_parser.nit:105,11--18
+                            ../src/test_parser.nit:105,11
+                        ../src/test_parser.nit:106,5--44
+                          ../src/test_parser.nit:106,5--44
+                            ../src/test_parser.nit:106,5--26
+                              '(' ... ../src/test_parser.nit:106,5
+                              ../src/test_parser.nit:106,6--25
+                                keyword 'new' ... ../src/test_parser.nit:106,6--8
+                                ../src/test_parser.nit:106,10--25
+                                  type identifier 'PrintTreeVisitor' ... ../src/test_parser.nit:106,10--25
+                                ../src/test_parser.nit:106,6
+                              ')' ... ../src/test_parser.nit:106,26
+                            identifier 'enter_visit' ... ../src/test_parser.nit:106,28--38
+                            ../src/test_parser.nit:106,39--44
+                              '(' ... ../src/test_parser.nit:106,39
+                              ../src/test_parser.nit:106,40--43
+                                ../src/test_parser.nit:106,40
+                                identifier 'tree' ... ../src/test_parser.nit:106,40--43
+                                ../src/test_parser.nit:106,40
+                              ')' ... ../src/test_parser.nit:106,44
+                        ../src/test_parser.nit:107,4--6
+                          keyword 'end' ... ../src/test_parser.nit:107,4--6
+                      keyword 'end' ... ../src/test_parser.nit:108,3--5
+                  keyword 'end' ... ../src/test_parser.nit:109,2--4
+              keyword 'end' ... ../src/test_parser.nit:110,1--3
+  end of file ... ../src/test_parser.nit:111,1
index 5c9bc73..4b39a6b 100644 (file)
@@ -191,362 +191,417 @@ Read token at ../src/test_parser.nit:46,15 text='='
 Read token at ../src/test_parser.nit:46,17--21 text='false'
 Read token at ../src/test_parser.nit:46,22--47,0 text='
 '
-Read token at ../src/test_parser.nit:47,1--48,0 text='
-'
-Read token at ../src/test_parser.nit:48,1--5 text='while'
-Read token at ../src/test_parser.nit:48,7--9 text='not'
-Read token at ../src/test_parser.nit:48,11--14 text='args'
-Read token at ../src/test_parser.nit:48,15 text='.'
-Read token at ../src/test_parser.nit:48,16--23 text='is_empty'
-Read token at ../src/test_parser.nit:48,25--27 text='and'
-Read token at ../src/test_parser.nit:48,29--32 text='args'
-Read token at ../src/test_parser.nit:48,33 text='.'
-Read token at ../src/test_parser.nit:48,34--38 text='first'
-Read token at ../src/test_parser.nit:48,39 text='.'
-Read token at ../src/test_parser.nit:48,40--44 text='first'
-Read token at ../src/test_parser.nit:48,46--47 text='=='
-Read token at ../src/test_parser.nit:48,49--51 text=''-''
-Read token at ../src/test_parser.nit:48,53--54 text='do'
-Read token at ../src/test_parser.nit:48,55--49,0 text='
-'
-Read token at ../src/test_parser.nit:49,2--3 text='if'
-Read token at ../src/test_parser.nit:49,5--8 text='args'
-Read token at ../src/test_parser.nit:49,9 text='.'
-Read token at ../src/test_parser.nit:49,10--14 text='first'
-Read token at ../src/test_parser.nit:49,16--17 text='=='
-Read token at ../src/test_parser.nit:49,19--22 text='"-n"'
-Read token at ../src/test_parser.nit:49,24--27 text='then'
-Read token at ../src/test_parser.nit:49,28--50,0 text='
-'
-Read token at ../src/test_parser.nit:50,3--10 text='no_print'
-Read token at ../src/test_parser.nit:50,12 text='='
-Read token at ../src/test_parser.nit:50,14--17 text='true'
-Read token at ../src/test_parser.nit:50,18--51,0 text='
-'
-Read token at ../src/test_parser.nit:51,2--5 text='else'
-Read token at ../src/test_parser.nit:51,7--8 text='if'
-Read token at ../src/test_parser.nit:51,10--13 text='args'
-Read token at ../src/test_parser.nit:51,14 text='.'
-Read token at ../src/test_parser.nit:51,15--19 text='first'
-Read token at ../src/test_parser.nit:51,21--22 text='=='
-Read token at ../src/test_parser.nit:51,24--27 text='"-l"'
-Read token at ../src/test_parser.nit:51,29--32 text='then'
-Read token at ../src/test_parser.nit:51,33--52,0 text='
-'
-Read token at ../src/test_parser.nit:52,3--12 text='only_lexer'
-Read token at ../src/test_parser.nit:52,14 text='='
-Read token at ../src/test_parser.nit:52,16--19 text='true'
-Read token at ../src/test_parser.nit:52,20--53,0 text='
-'
-Read token at ../src/test_parser.nit:53,2--5 text='else'
-Read token at ../src/test_parser.nit:53,7--8 text='if'
-Read token at ../src/test_parser.nit:53,10--13 text='args'
-Read token at ../src/test_parser.nit:53,14 text='.'
-Read token at ../src/test_parser.nit:53,15--19 text='first'
-Read token at ../src/test_parser.nit:53,21--22 text='=='
-Read token at ../src/test_parser.nit:53,24--27 text='"-p"'
-Read token at ../src/test_parser.nit:53,29--32 text='then'
-Read token at ../src/test_parser.nit:53,33--54,0 text='
-'
-Read token at ../src/test_parser.nit:54,3--12 text='only_lexer'
-Read token at ../src/test_parser.nit:54,14 text='='
-Read token at ../src/test_parser.nit:54,16--20 text='false'
-Read token at ../src/test_parser.nit:54,22--55,0 text='
-'
-Read token at ../src/test_parser.nit:55,2--5 text='else'
-Read token at ../src/test_parser.nit:55,7--8 text='if'
-Read token at ../src/test_parser.nit:55,10--13 text='args'
-Read token at ../src/test_parser.nit:55,14 text='.'
-Read token at ../src/test_parser.nit:55,15--19 text='first'
-Read token at ../src/test_parser.nit:55,21--22 text='=='
-Read token at ../src/test_parser.nit:55,24--27 text='"-h"'
-Read token at ../src/test_parser.nit:55,29--30 text='or'
-Read token at ../src/test_parser.nit:55,32--35 text='args'
-Read token at ../src/test_parser.nit:55,36 text='.'
-Read token at ../src/test_parser.nit:55,37--41 text='first'
-Read token at ../src/test_parser.nit:55,43--44 text='=='
-Read token at ../src/test_parser.nit:55,46--49 text='"-?"'
-Read token at ../src/test_parser.nit:55,51--54 text='then'
-Read token at ../src/test_parser.nit:55,55--56,0 text='
-'
-Read token at ../src/test_parser.nit:56,3--11 text='need_help'
-Read token at ../src/test_parser.nit:56,13 text='='
-Read token at ../src/test_parser.nit:56,15--18 text='true'
-Read token at ../src/test_parser.nit:56,19--57,0 text='
-'
-Read token at ../src/test_parser.nit:57,2--5 text='else'
-Read token at ../src/test_parser.nit:57,6--58,0 text='
-'
-Read token at ../src/test_parser.nit:58,3--8 text='stderr'
-Read token at ../src/test_parser.nit:58,9 text='.'
-Read token at ../src/test_parser.nit:58,10--14 text='write'
-Read token at ../src/test_parser.nit:58,15 text='('
-Read token at ../src/test_parser.nit:58,16--32 text='"Unknown option {'
-Read token at ../src/test_parser.nit:58,33--36 text='args'
-Read token at ../src/test_parser.nit:58,37 text='.'
-Read token at ../src/test_parser.nit:58,38--42 text='first'
-Read token at ../src/test_parser.nit:58,43--47 text='}.\n"'
-Read token at ../src/test_parser.nit:58,48 text=')'
-Read token at ../src/test_parser.nit:58,49--59,0 text='
-'
-Read token at ../src/test_parser.nit:59,3--6 text='exit'
-Read token at ../src/test_parser.nit:59,7 text='('
-Read token at ../src/test_parser.nit:59,8 text='0'
-Read token at ../src/test_parser.nit:59,9 text=')'
-Read token at ../src/test_parser.nit:59,10--60,0 text='
-'
-Read token at ../src/test_parser.nit:60,2--4 text='end'
-Read token at ../src/test_parser.nit:60,5--61,0 text='
-'
-Read token at ../src/test_parser.nit:61,2--5 text='args'
-Read token at ../src/test_parser.nit:61,6 text='.'
-Read token at ../src/test_parser.nit:61,7--11 text='shift'
-Read token at ../src/test_parser.nit:61,12--62,0 text='
-'
-Read token at ../src/test_parser.nit:62,1--3 text='end'
-Read token at ../src/test_parser.nit:62,4--63,0 text='
-'
-Read token at ../src/test_parser.nit:63,1--64,0 text='
-'
-Read token at ../src/test_parser.nit:64,1--2 text='if'
-Read token at ../src/test_parser.nit:64,4--7 text='args'
-Read token at ../src/test_parser.nit:64,8 text='.'
-Read token at ../src/test_parser.nit:64,9--16 text='is_empty'
-Read token at ../src/test_parser.nit:64,18--19 text='or'
-Read token at ../src/test_parser.nit:64,21--29 text='need_help'
-Read token at ../src/test_parser.nit:64,31--34 text='then'
-Read token at ../src/test_parser.nit:64,35--65,0 text='
-'
-Read token at ../src/test_parser.nit:65,2--6 text='print'
-Read token at ../src/test_parser.nit:65,7 text='('
-Read token at ../src/test_parser.nit:65,8--15 text='"usage:"'
-Read token at ../src/test_parser.nit:65,16 text=')'
-Read token at ../src/test_parser.nit:65,17--66,0 text='
-'
-Read token at ../src/test_parser.nit:66,2--6 text='print'
-Read token at ../src/test_parser.nit:66,7 text='('
-Read token at ../src/test_parser.nit:66,8--53 text='"  test_parser [options]... <filename.nit>..."'
-Read token at ../src/test_parser.nit:66,54 text=')'
-Read token at ../src/test_parser.nit:66,55--67,0 text='
-'
-Read token at ../src/test_parser.nit:67,2--6 text='print'
-Read token at ../src/test_parser.nit:67,7 text='('
-Read token at ../src/test_parser.nit:67,8--17 text='"options:"'
-Read token at ../src/test_parser.nit:67,18 text=')'
-Read token at ../src/test_parser.nit:67,19--68,0 text='
+Read token at ../src/test_parser.nit:47,1--3 text='var'
+Read token at ../src/test_parser.nit:47,5--11 text='no_file'
+Read token at ../src/test_parser.nit:47,13 text='='
+Read token at ../src/test_parser.nit:47,15--19 text='false'
+Read token at ../src/test_parser.nit:47,20--48,0 text='
+'
+Read token at ../src/test_parser.nit:48,1--49,0 text='
+'
+Read token at ../src/test_parser.nit:49,1--5 text='while'
+Read token at ../src/test_parser.nit:49,7--9 text='not'
+Read token at ../src/test_parser.nit:49,11--14 text='args'
+Read token at ../src/test_parser.nit:49,15 text='.'
+Read token at ../src/test_parser.nit:49,16--23 text='is_empty'
+Read token at ../src/test_parser.nit:49,25--27 text='and'
+Read token at ../src/test_parser.nit:49,29--32 text='args'
+Read token at ../src/test_parser.nit:49,33 text='.'
+Read token at ../src/test_parser.nit:49,34--38 text='first'
+Read token at ../src/test_parser.nit:49,39 text='.'
+Read token at ../src/test_parser.nit:49,40--44 text='first'
+Read token at ../src/test_parser.nit:49,46--47 text='=='
+Read token at ../src/test_parser.nit:49,49--51 text=''-''
+Read token at ../src/test_parser.nit:49,53--54 text='do'
+Read token at ../src/test_parser.nit:49,55--50,0 text='
+'
+Read token at ../src/test_parser.nit:50,2--3 text='if'
+Read token at ../src/test_parser.nit:50,5--8 text='args'
+Read token at ../src/test_parser.nit:50,9 text='.'
+Read token at ../src/test_parser.nit:50,10--14 text='first'
+Read token at ../src/test_parser.nit:50,16--17 text='=='
+Read token at ../src/test_parser.nit:50,19--22 text='"-n"'
+Read token at ../src/test_parser.nit:50,24--27 text='then'
+Read token at ../src/test_parser.nit:50,28--51,0 text='
+'
+Read token at ../src/test_parser.nit:51,3--10 text='no_print'
+Read token at ../src/test_parser.nit:51,12 text='='
+Read token at ../src/test_parser.nit:51,14--17 text='true'
+Read token at ../src/test_parser.nit:51,18--52,0 text='
+'
+Read token at ../src/test_parser.nit:52,2--5 text='else'
+Read token at ../src/test_parser.nit:52,7--8 text='if'
+Read token at ../src/test_parser.nit:52,10--13 text='args'
+Read token at ../src/test_parser.nit:52,14 text='.'
+Read token at ../src/test_parser.nit:52,15--19 text='first'
+Read token at ../src/test_parser.nit:52,21--22 text='=='
+Read token at ../src/test_parser.nit:52,24--27 text='"-l"'
+Read token at ../src/test_parser.nit:52,29--32 text='then'
+Read token at ../src/test_parser.nit:52,33--53,0 text='
+'
+Read token at ../src/test_parser.nit:53,3--12 text='only_lexer'
+Read token at ../src/test_parser.nit:53,14 text='='
+Read token at ../src/test_parser.nit:53,16--19 text='true'
+Read token at ../src/test_parser.nit:53,20--54,0 text='
+'
+Read token at ../src/test_parser.nit:54,2--5 text='else'
+Read token at ../src/test_parser.nit:54,7--8 text='if'
+Read token at ../src/test_parser.nit:54,10--13 text='args'
+Read token at ../src/test_parser.nit:54,14 text='.'
+Read token at ../src/test_parser.nit:54,15--19 text='first'
+Read token at ../src/test_parser.nit:54,21--22 text='=='
+Read token at ../src/test_parser.nit:54,24--27 text='"-p"'
+Read token at ../src/test_parser.nit:54,29--32 text='then'
+Read token at ../src/test_parser.nit:54,33--55,0 text='
+'
+Read token at ../src/test_parser.nit:55,3--12 text='only_lexer'
+Read token at ../src/test_parser.nit:55,14 text='='
+Read token at ../src/test_parser.nit:55,16--20 text='false'
+Read token at ../src/test_parser.nit:55,21--56,0 text='
+'
+Read token at ../src/test_parser.nit:56,2--5 text='else'
+Read token at ../src/test_parser.nit:56,7--8 text='if'
+Read token at ../src/test_parser.nit:56,10--13 text='args'
+Read token at ../src/test_parser.nit:56,14 text='.'
+Read token at ../src/test_parser.nit:56,15--19 text='first'
+Read token at ../src/test_parser.nit:56,21--22 text='=='
+Read token at ../src/test_parser.nit:56,24--27 text='"-e"'
+Read token at ../src/test_parser.nit:56,29--32 text='then'
+Read token at ../src/test_parser.nit:56,33--57,0 text='
+'
+Read token at ../src/test_parser.nit:57,3--9 text='no_file'
+Read token at ../src/test_parser.nit:57,11 text='='
+Read token at ../src/test_parser.nit:57,13--16 text='true'
+Read token at ../src/test_parser.nit:57,17--58,0 text='
+'
+Read token at ../src/test_parser.nit:58,2--5 text='else'
+Read token at ../src/test_parser.nit:58,7--8 text='if'
+Read token at ../src/test_parser.nit:58,10--13 text='args'
+Read token at ../src/test_parser.nit:58,14 text='.'
+Read token at ../src/test_parser.nit:58,15--19 text='first'
+Read token at ../src/test_parser.nit:58,21--22 text='=='
+Read token at ../src/test_parser.nit:58,24--27 text='"-h"'
+Read token at ../src/test_parser.nit:58,29--30 text='or'
+Read token at ../src/test_parser.nit:58,32--35 text='args'
+Read token at ../src/test_parser.nit:58,36 text='.'
+Read token at ../src/test_parser.nit:58,37--41 text='first'
+Read token at ../src/test_parser.nit:58,43--44 text='=='
+Read token at ../src/test_parser.nit:58,46--49 text='"-?"'
+Read token at ../src/test_parser.nit:58,51--54 text='then'
+Read token at ../src/test_parser.nit:58,55--59,0 text='
+'
+Read token at ../src/test_parser.nit:59,3--11 text='need_help'
+Read token at ../src/test_parser.nit:59,13 text='='
+Read token at ../src/test_parser.nit:59,15--18 text='true'
+Read token at ../src/test_parser.nit:59,19--60,0 text='
+'
+Read token at ../src/test_parser.nit:60,2--5 text='else'
+Read token at ../src/test_parser.nit:60,6--61,0 text='
+'
+Read token at ../src/test_parser.nit:61,3--8 text='stderr'
+Read token at ../src/test_parser.nit:61,9 text='.'
+Read token at ../src/test_parser.nit:61,10--14 text='write'
+Read token at ../src/test_parser.nit:61,15 text='('
+Read token at ../src/test_parser.nit:61,16--32 text='"Unknown option {'
+Read token at ../src/test_parser.nit:61,33--36 text='args'
+Read token at ../src/test_parser.nit:61,37 text='.'
+Read token at ../src/test_parser.nit:61,38--42 text='first'
+Read token at ../src/test_parser.nit:61,43--47 text='}.\n"'
+Read token at ../src/test_parser.nit:61,48 text=')'
+Read token at ../src/test_parser.nit:61,49--62,0 text='
+'
+Read token at ../src/test_parser.nit:62,3--6 text='exit'
+Read token at ../src/test_parser.nit:62,7 text='('
+Read token at ../src/test_parser.nit:62,8 text='0'
+Read token at ../src/test_parser.nit:62,9 text=')'
+Read token at ../src/test_parser.nit:62,10--63,0 text='
+'
+Read token at ../src/test_parser.nit:63,2--4 text='end'
+Read token at ../src/test_parser.nit:63,5--64,0 text='
+'
+Read token at ../src/test_parser.nit:64,2--5 text='args'
+Read token at ../src/test_parser.nit:64,6 text='.'
+Read token at ../src/test_parser.nit:64,7--11 text='shift'
+Read token at ../src/test_parser.nit:64,12--65,0 text='
+'
+Read token at ../src/test_parser.nit:65,1--3 text='end'
+Read token at ../src/test_parser.nit:65,4--66,0 text='
+'
+Read token at ../src/test_parser.nit:66,1--67,0 text='
+'
+Read token at ../src/test_parser.nit:67,1--2 text='if'
+Read token at ../src/test_parser.nit:67,4--7 text='args'
+Read token at ../src/test_parser.nit:67,8 text='.'
+Read token at ../src/test_parser.nit:67,9--16 text='is_empty'
+Read token at ../src/test_parser.nit:67,18--19 text='or'
+Read token at ../src/test_parser.nit:67,21--29 text='need_help'
+Read token at ../src/test_parser.nit:67,31--34 text='then'
+Read token at ../src/test_parser.nit:67,35--68,0 text='
 '
 Read token at ../src/test_parser.nit:68,2--6 text='print'
 Read token at ../src/test_parser.nit:68,7 text='('
-Read token at ../src/test_parser.nit:68,8--35 text='"  -n      do not print anything"'
-Read token at ../src/test_parser.nit:68,36 text=')'
-Read token at ../src/test_parser.nit:68,37--69,0 text='
+Read token at ../src/test_parser.nit:68,8--15 text='"usage:"'
+Read token at ../src/test_parser.nit:68,16 text=')'
+Read token at ../src/test_parser.nit:68,17--69,0 text='
 '
 Read token at ../src/test_parser.nit:69,2--6 text='print'
 Read token at ../src/test_parser.nit:69,7 text='('
-Read token at ../src/test_parser.nit:69,8--24 text='"  -l      only lexer"'
-Read token at ../src/test_parser.nit:69,25 text=')'
-Read token at ../src/test_parser.nit:69,26--70,0 text='
+Read token at ../src/test_parser.nit:69,8--53 text='"  test_parser [options]... <filename.nit>..."'
+Read token at ../src/test_parser.nit:69,54 text=')'
+Read token at ../src/test_parser.nit:69,55--70,0 text='
 '
 Read token at ../src/test_parser.nit:70,2--6 text='print'
 Read token at ../src/test_parser.nit:70,7 text='('
-Read token at ../src/test_parser.nit:70,8--40 text='"  -p      lexer and parser (default)"'
-Read token at ../src/test_parser.nit:70,41 text=')'
-Read token at ../src/test_parser.nit:70,42--71,0 text='
+Read token at ../src/test_parser.nit:70,8--17 text='"options:"'
+Read token at ../src/test_parser.nit:70,18 text=')'
+Read token at ../src/test_parser.nit:70,19--71,0 text='
 '
 Read token at ../src/test_parser.nit:71,2--6 text='print'
 Read token at ../src/test_parser.nit:71,7 text='('
-Read token at ../src/test_parser.nit:71,8--29 text='"  -h      print this help"'
-Read token at ../src/test_parser.nit:71,30 text=')'
-Read token at ../src/test_parser.nit:71,31--72,0 text='
-'
-Read token at ../src/test_parser.nit:72,1--4 text='else'
-Read token at ../src/test_parser.nit:72,5--73,0 text='
-'
-Read token at ../src/test_parser.nit:73,2--4 text='for'
-Read token at ../src/test_parser.nit:73,6 text='a'
-Read token at ../src/test_parser.nit:73,8--9 text='in'
-Read token at ../src/test_parser.nit:73,11--14 text='args'
-Read token at ../src/test_parser.nit:73,16--17 text='do'
-Read token at ../src/test_parser.nit:73,18--74,0 text='
-'
-Read token at ../src/test_parser.nit:74,3--5 text='var'
-Read token at ../src/test_parser.nit:74,7 text='f'
-Read token at ../src/test_parser.nit:74,9 text='='
-Read token at ../src/test_parser.nit:74,11--13 text='new'
-Read token at ../src/test_parser.nit:74,15--22 text='IFStream'
-Read token at ../src/test_parser.nit:74,23 text='.'
-Read token at ../src/test_parser.nit:74,24--27 text='open'
-Read token at ../src/test_parser.nit:74,28 text='('
-Read token at ../src/test_parser.nit:74,29 text='a'
-Read token at ../src/test_parser.nit:74,30 text=')'
-Read token at ../src/test_parser.nit:74,31--75,0 text='
-'
-Read token at ../src/test_parser.nit:75,3--5 text='var'
-Read token at ../src/test_parser.nit:75,7--11 text='lexer'
-Read token at ../src/test_parser.nit:75,13 text='='
-Read token at ../src/test_parser.nit:75,15--17 text='new'
-Read token at ../src/test_parser.nit:75,19--23 text='Lexer'
-Read token at ../src/test_parser.nit:75,24 text='('
-Read token at ../src/test_parser.nit:75,25--27 text='new'
-Read token at ../src/test_parser.nit:75,29--38 text='SourceFile'
-Read token at ../src/test_parser.nit:75,39 text='('
-Read token at ../src/test_parser.nit:75,40 text='a'
-Read token at ../src/test_parser.nit:75,41 text=','
-Read token at ../src/test_parser.nit:75,43 text='f'
-Read token at ../src/test_parser.nit:75,44 text=')'
-Read token at ../src/test_parser.nit:75,45 text=')'
-Read token at ../src/test_parser.nit:75,46--76,0 text='
-'
-Read token at ../src/test_parser.nit:76,3--4 text='if'
-Read token at ../src/test_parser.nit:76,6--15 text='only_lexer'
-Read token at ../src/test_parser.nit:76,17--20 text='then'
-Read token at ../src/test_parser.nit:76,21--77,0 text='
-'
-Read token at ../src/test_parser.nit:77,4--6 text='var'
-Read token at ../src/test_parser.nit:77,8--12 text='token'
-Read token at ../src/test_parser.nit:77,14 text='='
-Read token at ../src/test_parser.nit:77,16--20 text='lexer'
-Read token at ../src/test_parser.nit:77,21 text='.'
-Read token at ../src/test_parser.nit:77,22--25 text='next'
-Read token at ../src/test_parser.nit:77,26--78,0 text='
-'
-Read token at ../src/test_parser.nit:78,4--8 text='while'
-Read token at ../src/test_parser.nit:78,10--12 text='not'
-Read token at ../src/test_parser.nit:78,14--18 text='token'
-Read token at ../src/test_parser.nit:78,20--22 text='isa'
-Read token at ../src/test_parser.nit:78,24--26 text='EOF'
-Read token at ../src/test_parser.nit:78,28--29 text='do'
-Read token at ../src/test_parser.nit:78,30--79,0 text='
-'
-Read token at ../src/test_parser.nit:79,5--6 text='if'
-Read token at ../src/test_parser.nit:79,8--10 text='not'
-Read token at ../src/test_parser.nit:79,12--19 text='no_print'
-Read token at ../src/test_parser.nit:79,21--24 text='then'
-Read token at ../src/test_parser.nit:79,25--80,0 text='
-'
-Read token at ../src/test_parser.nit:80,6--10 text='print'
-Read token at ../src/test_parser.nit:80,11 text='('
-Read token at ../src/test_parser.nit:80,12--27 text='"Read token at {'
-Read token at ../src/test_parser.nit:80,28--32 text='token'
-Read token at ../src/test_parser.nit:80,33 text='.'
-Read token at ../src/test_parser.nit:80,34--41 text='location'
-Read token at ../src/test_parser.nit:80,42--50 text='} text='{'
-Read token at ../src/test_parser.nit:80,51--55 text='token'
-Read token at ../src/test_parser.nit:80,56 text='.'
-Read token at ../src/test_parser.nit:80,57--60 text='text'
-Read token at ../src/test_parser.nit:80,61--63 text='}'"'
-Read token at ../src/test_parser.nit:80,64 text=')'
-Read token at ../src/test_parser.nit:80,65--81,0 text='
-'
-Read token at ../src/test_parser.nit:81,5--7 text='end'
-Read token at ../src/test_parser.nit:81,8--82,0 text='
-'
-Read token at ../src/test_parser.nit:82,5--9 text='token'
-Read token at ../src/test_parser.nit:82,11 text='='
-Read token at ../src/test_parser.nit:82,13--17 text='lexer'
-Read token at ../src/test_parser.nit:82,18 text='.'
-Read token at ../src/test_parser.nit:82,19--22 text='next'
-Read token at ../src/test_parser.nit:82,23--83,0 text='
-'
-Read token at ../src/test_parser.nit:83,4--6 text='end'
-Read token at ../src/test_parser.nit:83,7--84,0 text='
+Read token at ../src/test_parser.nit:71,8--35 text='"  -n      do not print anything"'
+Read token at ../src/test_parser.nit:71,36 text=')'
+Read token at ../src/test_parser.nit:71,37--72,0 text='
+'
+Read token at ../src/test_parser.nit:72,2--6 text='print'
+Read token at ../src/test_parser.nit:72,7 text='('
+Read token at ../src/test_parser.nit:72,8--24 text='"  -l      only lexer"'
+Read token at ../src/test_parser.nit:72,25 text=')'
+Read token at ../src/test_parser.nit:72,26--73,0 text='
+'
+Read token at ../src/test_parser.nit:73,2--6 text='print'
+Read token at ../src/test_parser.nit:73,7 text='('
+Read token at ../src/test_parser.nit:73,8--40 text='"  -p      lexer and parser (default)"'
+Read token at ../src/test_parser.nit:73,41 text=')'
+Read token at ../src/test_parser.nit:73,42--74,0 text='
+'
+Read token at ../src/test_parser.nit:74,2--6 text='print'
+Read token at ../src/test_parser.nit:74,7 text='('
+Read token at ../src/test_parser.nit:74,8--67 text='"  -e      instead on files, each argument is a content to parse"'
+Read token at ../src/test_parser.nit:74,68 text=')'
+Read token at ../src/test_parser.nit:74,69--75,0 text='
+'
+Read token at ../src/test_parser.nit:75,2--6 text='print'
+Read token at ../src/test_parser.nit:75,7 text='('
+Read token at ../src/test_parser.nit:75,8--29 text='"  -h      print this help"'
+Read token at ../src/test_parser.nit:75,30 text=')'
+Read token at ../src/test_parser.nit:75,31--76,0 text='
+'
+Read token at ../src/test_parser.nit:76,1--4 text='else'
+Read token at ../src/test_parser.nit:76,5--77,0 text='
+'
+Read token at ../src/test_parser.nit:77,2--4 text='for'
+Read token at ../src/test_parser.nit:77,6 text='a'
+Read token at ../src/test_parser.nit:77,8--9 text='in'
+Read token at ../src/test_parser.nit:77,11--14 text='args'
+Read token at ../src/test_parser.nit:77,16--17 text='do'
+Read token at ../src/test_parser.nit:77,18--78,0 text='
+'
+Read token at ../src/test_parser.nit:78,3--5 text='var'
+Read token at ../src/test_parser.nit:78,7--12 text='source'
+Read token at ../src/test_parser.nit:78,13--79,0 text='
+'
+Read token at ../src/test_parser.nit:79,3--4 text='if'
+Read token at ../src/test_parser.nit:79,6--12 text='no_file'
+Read token at ../src/test_parser.nit:79,14--17 text='then'
+Read token at ../src/test_parser.nit:79,18--80,0 text='
+'
+Read token at ../src/test_parser.nit:80,4--9 text='source'
+Read token at ../src/test_parser.nit:80,11 text='='
+Read token at ../src/test_parser.nit:80,13--15 text='new'
+Read token at ../src/test_parser.nit:80,17--26 text='SourceFile'
+Read token at ../src/test_parser.nit:80,27 text='.'
+Read token at ../src/test_parser.nit:80,28--38 text='from_string'
+Read token at ../src/test_parser.nit:80,39 text='('
+Read token at ../src/test_parser.nit:80,40--41 text='""'
+Read token at ../src/test_parser.nit:80,42 text=','
+Read token at ../src/test_parser.nit:80,44 text='a'
+Read token at ../src/test_parser.nit:80,45 text=')'
+Read token at ../src/test_parser.nit:80,46--81,0 text='
+'
+Read token at ../src/test_parser.nit:81,3--6 text='else'
+Read token at ../src/test_parser.nit:81,7--82,0 text='
+'
+Read token at ../src/test_parser.nit:82,4--6 text='var'
+Read token at ../src/test_parser.nit:82,8 text='f'
+Read token at ../src/test_parser.nit:82,10 text='='
+Read token at ../src/test_parser.nit:82,12--14 text='new'
+Read token at ../src/test_parser.nit:82,16--23 text='IFStream'
+Read token at ../src/test_parser.nit:82,24 text='.'
+Read token at ../src/test_parser.nit:82,25--28 text='open'
+Read token at ../src/test_parser.nit:82,29 text='('
+Read token at ../src/test_parser.nit:82,30 text='a'
+Read token at ../src/test_parser.nit:82,31 text=')'
+Read token at ../src/test_parser.nit:82,32--83,0 text='
+'
+Read token at ../src/test_parser.nit:83,4--9 text='source'
+Read token at ../src/test_parser.nit:83,11 text='='
+Read token at ../src/test_parser.nit:83,13--15 text='new'
+Read token at ../src/test_parser.nit:83,17--26 text='SourceFile'
+Read token at ../src/test_parser.nit:83,27 text='('
+Read token at ../src/test_parser.nit:83,28 text='a'
+Read token at ../src/test_parser.nit:83,29 text=','
+Read token at ../src/test_parser.nit:83,31 text='f'
+Read token at ../src/test_parser.nit:83,32 text=')'
+Read token at ../src/test_parser.nit:83,33--84,0 text='
 '
 Read token at ../src/test_parser.nit:84,4 text='f'
 Read token at ../src/test_parser.nit:84,5 text='.'
 Read token at ../src/test_parser.nit:84,6--10 text='close'
 Read token at ../src/test_parser.nit:84,11--85,0 text='
 '
-Read token at ../src/test_parser.nit:85,3--6 text='else'
-Read token at ../src/test_parser.nit:85,7--86,0 text='
-'
-Read token at ../src/test_parser.nit:86,4--6 text='var'
-Read token at ../src/test_parser.nit:86,8--13 text='parser'
-Read token at ../src/test_parser.nit:86,15 text='='
-Read token at ../src/test_parser.nit:86,17--19 text='new'
-Read token at ../src/test_parser.nit:86,21--26 text='Parser'
-Read token at ../src/test_parser.nit:86,27 text='('
-Read token at ../src/test_parser.nit:86,28--32 text='lexer'
-Read token at ../src/test_parser.nit:86,33 text=')'
-Read token at ../src/test_parser.nit:86,34--87,0 text='
-'
-Read token at ../src/test_parser.nit:87,4--6 text='var'
-Read token at ../src/test_parser.nit:87,8--11 text='tree'
-Read token at ../src/test_parser.nit:87,13 text='='
-Read token at ../src/test_parser.nit:87,15--20 text='parser'
-Read token at ../src/test_parser.nit:87,21 text='.'
-Read token at ../src/test_parser.nit:87,22--26 text='parse'
-Read token at ../src/test_parser.nit:87,27--88,0 text='
-'
-Read token at ../src/test_parser.nit:88,4 text='f'
-Read token at ../src/test_parser.nit:88,5 text='.'
-Read token at ../src/test_parser.nit:88,6--10 text='close'
-Read token at ../src/test_parser.nit:88,11--89,0 text='
-'
-Read token at ../src/test_parser.nit:89,1--90,0 text='
-'
-Read token at ../src/test_parser.nit:90,4--6 text='var'
-Read token at ../src/test_parser.nit:90,8--12 text='error'
-Read token at ../src/test_parser.nit:90,14 text='='
-Read token at ../src/test_parser.nit:90,16--19 text='tree'
-Read token at ../src/test_parser.nit:90,20 text='.'
-Read token at ../src/test_parser.nit:90,21--25 text='n_eof'
-Read token at ../src/test_parser.nit:90,26--91,0 text='
-'
-Read token at ../src/test_parser.nit:91,4--5 text='if'
-Read token at ../src/test_parser.nit:91,7--11 text='error'
-Read token at ../src/test_parser.nit:91,13--15 text='isa'
-Read token at ../src/test_parser.nit:91,17--22 text='AError'
-Read token at ../src/test_parser.nit:91,24--27 text='then'
-Read token at ../src/test_parser.nit:91,28--92,0 text='
-'
-Read token at ../src/test_parser.nit:92,5--9 text='print'
-Read token at ../src/test_parser.nit:92,10 text='('
-Read token at ../src/test_parser.nit:92,11--21 text='"Error at {'
-Read token at ../src/test_parser.nit:92,22--26 text='error'
-Read token at ../src/test_parser.nit:92,27 text='.'
-Read token at ../src/test_parser.nit:92,28--35 text='location'
-Read token at ../src/test_parser.nit:92,36--42 text='}:\n\t{'
-Read token at ../src/test_parser.nit:92,43--47 text='error'
-Read token at ../src/test_parser.nit:92,48 text='.'
-Read token at ../src/test_parser.nit:92,49--55 text='message'
-Read token at ../src/test_parser.nit:92,56--57 text='}"'
-Read token at ../src/test_parser.nit:92,58 text=')'
-Read token at ../src/test_parser.nit:92,59--93,0 text='
-'
-Read token at ../src/test_parser.nit:93,5--10 text='return'
-Read token at ../src/test_parser.nit:93,11--94,0 text='
+Read token at ../src/test_parser.nit:85,3--5 text='end'
+Read token at ../src/test_parser.nit:85,6--86,0 text='
+'
+Read token at ../src/test_parser.nit:86,3--5 text='var'
+Read token at ../src/test_parser.nit:86,7--11 text='lexer'
+Read token at ../src/test_parser.nit:86,13 text='='
+Read token at ../src/test_parser.nit:86,15--17 text='new'
+Read token at ../src/test_parser.nit:86,19--23 text='Lexer'
+Read token at ../src/test_parser.nit:86,24 text='('
+Read token at ../src/test_parser.nit:86,25--30 text='source'
+Read token at ../src/test_parser.nit:86,31 text=')'
+Read token at ../src/test_parser.nit:86,32--87,0 text='
+'
+Read token at ../src/test_parser.nit:87,3--4 text='if'
+Read token at ../src/test_parser.nit:87,6--15 text='only_lexer'
+Read token at ../src/test_parser.nit:87,17--20 text='then'
+Read token at ../src/test_parser.nit:87,21--88,0 text='
+'
+Read token at ../src/test_parser.nit:88,4--6 text='var'
+Read token at ../src/test_parser.nit:88,8--12 text='token'
+Read token at ../src/test_parser.nit:88,14 text='='
+Read token at ../src/test_parser.nit:88,16--20 text='lexer'
+Read token at ../src/test_parser.nit:88,21 text='.'
+Read token at ../src/test_parser.nit:88,22--25 text='next'
+Read token at ../src/test_parser.nit:88,26--89,0 text='
+'
+Read token at ../src/test_parser.nit:89,4--8 text='while'
+Read token at ../src/test_parser.nit:89,10--12 text='not'
+Read token at ../src/test_parser.nit:89,14--18 text='token'
+Read token at ../src/test_parser.nit:89,20--22 text='isa'
+Read token at ../src/test_parser.nit:89,24--26 text='EOF'
+Read token at ../src/test_parser.nit:89,28--29 text='do'
+Read token at ../src/test_parser.nit:89,30--90,0 text='
+'
+Read token at ../src/test_parser.nit:90,5--6 text='if'
+Read token at ../src/test_parser.nit:90,8--10 text='not'
+Read token at ../src/test_parser.nit:90,12--19 text='no_print'
+Read token at ../src/test_parser.nit:90,21--24 text='then'
+Read token at ../src/test_parser.nit:90,25--91,0 text='
+'
+Read token at ../src/test_parser.nit:91,6--10 text='print'
+Read token at ../src/test_parser.nit:91,11 text='('
+Read token at ../src/test_parser.nit:91,12--27 text='"Read token at {'
+Read token at ../src/test_parser.nit:91,28--32 text='token'
+Read token at ../src/test_parser.nit:91,33 text='.'
+Read token at ../src/test_parser.nit:91,34--41 text='location'
+Read token at ../src/test_parser.nit:91,42--50 text='} text='{'
+Read token at ../src/test_parser.nit:91,51--55 text='token'
+Read token at ../src/test_parser.nit:91,56 text='.'
+Read token at ../src/test_parser.nit:91,57--60 text='text'
+Read token at ../src/test_parser.nit:91,61--63 text='}'"'
+Read token at ../src/test_parser.nit:91,64 text=')'
+Read token at ../src/test_parser.nit:91,65--92,0 text='
+'
+Read token at ../src/test_parser.nit:92,5--7 text='end'
+Read token at ../src/test_parser.nit:92,8--93,0 text='
+'
+Read token at ../src/test_parser.nit:93,5--9 text='token'
+Read token at ../src/test_parser.nit:93,11 text='='
+Read token at ../src/test_parser.nit:93,13--17 text='lexer'
+Read token at ../src/test_parser.nit:93,18 text='.'
+Read token at ../src/test_parser.nit:93,19--22 text='next'
+Read token at ../src/test_parser.nit:93,23--94,0 text='
 '
 Read token at ../src/test_parser.nit:94,4--6 text='end'
 Read token at ../src/test_parser.nit:94,7--95,0 text='
 '
-Read token at ../src/test_parser.nit:95,1--96,0 text='
-'
-Read token at ../src/test_parser.nit:96,4--5 text='if'
-Read token at ../src/test_parser.nit:96,7--9 text='not'
-Read token at ../src/test_parser.nit:96,11--18 text='no_print'
-Read token at ../src/test_parser.nit:96,20--23 text='then'
-Read token at ../src/test_parser.nit:96,24--97,0 text='
-'
-Read token at ../src/test_parser.nit:97,5 text='('
-Read token at ../src/test_parser.nit:97,6--8 text='new'
-Read token at ../src/test_parser.nit:97,10--25 text='PrintTreeVisitor'
-Read token at ../src/test_parser.nit:97,26 text=')'
-Read token at ../src/test_parser.nit:97,27 text='.'
-Read token at ../src/test_parser.nit:97,28--38 text='enter_visit'
-Read token at ../src/test_parser.nit:97,39 text='('
-Read token at ../src/test_parser.nit:97,40--43 text='tree'
-Read token at ../src/test_parser.nit:97,44 text=')'
-Read token at ../src/test_parser.nit:97,45--98,0 text='
-'
-Read token at ../src/test_parser.nit:98,4--6 text='end'
-Read token at ../src/test_parser.nit:98,7--99,0 text='
-'
-Read token at ../src/test_parser.nit:99,3--5 text='end'
-Read token at ../src/test_parser.nit:99,6--100,0 text='
-'
-Read token at ../src/test_parser.nit:100,2--4 text='end'
-Read token at ../src/test_parser.nit:100,5--101,0 text='
-'
-Read token at ../src/test_parser.nit:101,1--3 text='end'
-Read token at ../src/test_parser.nit:101,4--102,0 text='
+Read token at ../src/test_parser.nit:95,3--6 text='else'
+Read token at ../src/test_parser.nit:95,7--96,0 text='
+'
+Read token at ../src/test_parser.nit:96,4--6 text='var'
+Read token at ../src/test_parser.nit:96,8--13 text='parser'
+Read token at ../src/test_parser.nit:96,15 text='='
+Read token at ../src/test_parser.nit:96,17--19 text='new'
+Read token at ../src/test_parser.nit:96,21--26 text='Parser'
+Read token at ../src/test_parser.nit:96,27 text='('
+Read token at ../src/test_parser.nit:96,28--32 text='lexer'
+Read token at ../src/test_parser.nit:96,33 text=')'
+Read token at ../src/test_parser.nit:96,34--97,0 text='
+'
+Read token at ../src/test_parser.nit:97,4--6 text='var'
+Read token at ../src/test_parser.nit:97,8--11 text='tree'
+Read token at ../src/test_parser.nit:97,13 text='='
+Read token at ../src/test_parser.nit:97,15--20 text='parser'
+Read token at ../src/test_parser.nit:97,21 text='.'
+Read token at ../src/test_parser.nit:97,22--26 text='parse'
+Read token at ../src/test_parser.nit:97,27--98,0 text='
+'
+Read token at ../src/test_parser.nit:98,1--99,0 text='
+'
+Read token at ../src/test_parser.nit:99,4--6 text='var'
+Read token at ../src/test_parser.nit:99,8--12 text='error'
+Read token at ../src/test_parser.nit:99,14 text='='
+Read token at ../src/test_parser.nit:99,16--19 text='tree'
+Read token at ../src/test_parser.nit:99,20 text='.'
+Read token at ../src/test_parser.nit:99,21--25 text='n_eof'
+Read token at ../src/test_parser.nit:99,26--100,0 text='
+'
+Read token at ../src/test_parser.nit:100,4--5 text='if'
+Read token at ../src/test_parser.nit:100,7--11 text='error'
+Read token at ../src/test_parser.nit:100,13--15 text='isa'
+Read token at ../src/test_parser.nit:100,17--22 text='AError'
+Read token at ../src/test_parser.nit:100,24--27 text='then'
+Read token at ../src/test_parser.nit:100,28--101,0 text='
+'
+Read token at ../src/test_parser.nit:101,5--9 text='print'
+Read token at ../src/test_parser.nit:101,10 text='('
+Read token at ../src/test_parser.nit:101,11--21 text='"Error at {'
+Read token at ../src/test_parser.nit:101,22--26 text='error'
+Read token at ../src/test_parser.nit:101,27 text='.'
+Read token at ../src/test_parser.nit:101,28--35 text='location'
+Read token at ../src/test_parser.nit:101,36--42 text='}:\n\t{'
+Read token at ../src/test_parser.nit:101,43--47 text='error'
+Read token at ../src/test_parser.nit:101,48 text='.'
+Read token at ../src/test_parser.nit:101,49--55 text='message'
+Read token at ../src/test_parser.nit:101,56--57 text='}"'
+Read token at ../src/test_parser.nit:101,58 text=')'
+Read token at ../src/test_parser.nit:101,59--102,0 text='
+'
+Read token at ../src/test_parser.nit:102,5--10 text='return'
+Read token at ../src/test_parser.nit:102,11--103,0 text='
+'
+Read token at ../src/test_parser.nit:103,4--6 text='end'
+Read token at ../src/test_parser.nit:103,7--104,0 text='
+'
+Read token at ../src/test_parser.nit:104,1--105,0 text='
+'
+Read token at ../src/test_parser.nit:105,4--5 text='if'
+Read token at ../src/test_parser.nit:105,7--9 text='not'
+Read token at ../src/test_parser.nit:105,11--18 text='no_print'
+Read token at ../src/test_parser.nit:105,20--23 text='then'
+Read token at ../src/test_parser.nit:105,24--106,0 text='
+'
+Read token at ../src/test_parser.nit:106,5 text='('
+Read token at ../src/test_parser.nit:106,6--8 text='new'
+Read token at ../src/test_parser.nit:106,10--25 text='PrintTreeVisitor'
+Read token at ../src/test_parser.nit:106,26 text=')'
+Read token at ../src/test_parser.nit:106,27 text='.'
+Read token at ../src/test_parser.nit:106,28--38 text='enter_visit'
+Read token at ../src/test_parser.nit:106,39 text='('
+Read token at ../src/test_parser.nit:106,40--43 text='tree'
+Read token at ../src/test_parser.nit:106,44 text=')'
+Read token at ../src/test_parser.nit:106,45--107,0 text='
+'
+Read token at ../src/test_parser.nit:107,4--6 text='end'
+Read token at ../src/test_parser.nit:107,7--108,0 text='
+'
+Read token at ../src/test_parser.nit:108,3--5 text='end'
+Read token at ../src/test_parser.nit:108,6--109,0 text='
+'
+Read token at ../src/test_parser.nit:109,2--4 text='end'
+Read token at ../src/test_parser.nit:109,5--110,0 text='
+'
+Read token at ../src/test_parser.nit:110,1--3 text='end'
+Read token at ../src/test_parser.nit:110,4--111,0 text='
 '
diff --git a/tests/sav/test_parser_args6.res b/tests/sav/test_parser_args6.res
new file mode 100644 (file)
index 0000000..4a865b6
--- /dev/null
@@ -0,0 +1,29 @@
+1,1--42
+  1,1--41
+    1,1--41
+      1,1--41
+        1,1--41
+          1,1--41
+            keyword 'var' ... 1,1--3
+            identifier 'toto' ... 1,5--8
+            1,11--14
+              type identifier 'Toto' ... 1,11--14
+            '=' ... 1,16
+            1,18--41
+              keyword 'new' ... 1,18--20
+              1,22--25
+                type identifier 'Toto' ... 1,22--25
+              identifier 'toto' ... 1,27--30
+              1,31--41
+                '(' ... 1,31
+                1,32--40
+                  1,32--35
+                    1,32
+                    identifier 'toto' ... 1,32--35
+                    1,32
+                  1,37--40
+                    1,37
+                    identifier 'toto' ... 1,37--40
+                    1,37
+                ')' ... 1,41
+  end of file ... 1,42
index 9ee0788..058bf6b 100644 (file)
@@ -3,3 +3,4 @@
 ./error_syntax.nit
 -l ./error_syntax.nit
 ./error_syntax3.nit
+-e "var toto: Toto = new Toto.toto(toto+toto)"