date
[mono.git] / mcs / mcs / cs-tokenizer.cs
index 281d9d1199dec474c6209811f72e706b41ae50cc..351edc585cff13156417ea6524866a325199227d 100755 (executable)
@@ -31,7 +31,8 @@ namespace Mono.CSharp
        public class Tokenizer : yyParser.yyInput\r
        {\r
                StreamReader reader;\r
-               public string ref_name;\r
+               public SourceFile ref_name;\r
+               public SourceFile file_name;\r
                public int ref_line = 1;\r
                public int line = 1;\r
                public int col = 1;\r
@@ -94,8 +95,8 @@ namespace Mono.CSharp
                                if (current_token_name == null)\r
                                        current_token_name = current_token.ToString ();\r
 \r
-                               return String.Format ("{0} ({1},{2}), Token: {3} {4}", ref_name,\r
-                                                                                      line,\r
+                               return String.Format ("{0} ({1},{2}), Token: {3} {4}", ref_name.Name,\r
+                                                                                      ref_line,\r
                                                                                       col,\r
                                                                                       current_token_name,\r
                                                                                       det);\r
@@ -183,7 +184,7 @@ namespace Mono.CSharp
                \r
                public int Line {\r
                        get {\r
-                               return line;\r
+                               return ref_line;\r
                        }\r
                }\r
 \r
@@ -279,6 +280,11 @@ namespace Mono.CSharp
                        keywords.Add ("void", Token.VOID);\r
                        keywords.Add ("volatile", Token.VOLATILE);\r
                        keywords.Add ("while", Token.WHILE);\r
+\r
+                       if (RootContext.V2){\r
+                               keywords.Add ("__yield", Token.YIELD);\r
+                               keywords.Add ("yield", Token.YIELD);\r
+                       }\r
                }\r
 \r
                //\r
@@ -328,9 +334,10 @@ namespace Mono.CSharp
                        defines [def] = true;\r
                }\r
                \r
-               public Tokenizer (StreamReader input, string fname, ArrayList defs)\r
+               public Tokenizer (StreamReader input, SourceFile file, ArrayList defs)\r
                {\r
-                       this.ref_name = fname;\r
+                       this.ref_name = file;\r
+                       this.file_name = file;\r
                        reader = input;\r
                        \r
                        putback_char = -1;\r
@@ -345,7 +352,7 @@ namespace Mono.CSharp
                        // FIXME: This could be `Location.Push' but we have to\r
                        // find out why the MS compiler allows this\r
                        //\r
-                       Mono.CSharp.Location.Push (fname);\r
+                       Mono.CSharp.Location.Push (file);\r
                }\r
 \r
                bool is_identifier_start_character (char c)\r
@@ -562,8 +569,6 @@ namespace Mono.CSharp
                \r
                void hex_digits (int c)\r
                {\r
-                       int d;\r
-\r
                        if (c != -1)\r
                                number_builder [number_pos++] = (char) c;\r
                        \r
@@ -971,7 +976,7 @@ namespace Mono.CSharp
                        if (putback_char != -1){\r
                                Console.WriteLine ("Col: " + col);\r
                                Console.WriteLine ("Row: " + line);\r
-                               Console.WriteLine ("Name: " + ref_name);\r
+                               Console.WriteLine ("Name: " + ref_name.Name);\r
                                Console.WriteLine ("Current [{0}] putting back [{1}]  ", putback_char, c);\r
                                throw new Exception ("This should not happen putback on putback");\r
                        }\r
@@ -1060,8 +1065,10 @@ namespace Mono.CSharp
                                return false;\r
 \r
                        if (arg == "default"){\r
-                               line = ref_line = line;\r
-                               return false;\r
+                               ref_line = line;\r
+                               ref_name = file_name;\r
+                               Location.Push (ref_name);\r
+                               return true;\r
                        }\r
                        \r
                        try {\r
@@ -1073,7 +1080,9 @@ namespace Mono.CSharp
                                        \r
                                        char [] quotes = { '\"' };\r
                                        \r
-                                       ref_name = arg.Substring (pos). Trim (quotes);\r
+                                       string name = arg.Substring (pos). Trim (quotes);\r
+                                       ref_name = Location.LookupFile (name);\r
+                                       Location.Push (ref_name);\r
                                } else {\r
                                        ref_line = System.Int32.Parse (arg);\r
                                }\r
@@ -1759,7 +1768,7 @@ namespace Mono.CSharp
                        return Token.EOF;\r
                }\r
 \r
-               public void Cleanup ()\r
+               public void cleanup ()\r
                {\r
                        if (ifstack != null && ifstack.Count >= 1) {\r
                                int state = (int) ifstack.Pop ();\r