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
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
\r
public int Line {\r
get {\r
- return line;\r
+ return ref_line;\r
}\r
}\r
\r
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
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
// 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
\r
void hex_digits (int c)\r
{\r
- int d;\r
-\r
if (c != -1)\r
number_builder [number_pos++] = (char) c;\r
\r
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
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
\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
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