diff --git a/CSharpTranslator/antlr3/src/cs2j/CLR/cs2j.cs b/CSharpTranslator/antlr3/src/cs2j/CLR/cs2j.cs index 23ffaa4..20d416f 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CLR/cs2j.cs +++ b/CSharpTranslator/antlr3/src/cs2j/CLR/cs2j.cs @@ -208,7 +208,7 @@ namespace RusticiSoftware.Translator.CSharp if (parser_rt == null || parser_rt.Tree == null) { - if (tokens.Count > 0) + if (lex.FoundMeat) { Console.WriteLine("No Tree returned from parsing! (Your rule did not parse correctly)"); } @@ -216,6 +216,7 @@ namespace RusticiSoftware.Translator.CSharp { // the file was empty, this is not an error. } + return null; } CommonTreeNodeStream nodes = new CommonTreeNodeStream(parser_rt.Tree); @@ -253,7 +254,7 @@ namespace RusticiSoftware.Translator.CSharp { if (cfg.DebugLevel > 3) Console.Out.WriteLine("Translating file {0}", fullName); CommonTreeNodeStream csTree = parseFile(fullName); - if (cfg.DumpCSharp) AntlrUtils.AntlrUtils.DumpNodes(csTree); + if (cfg.DumpCSharp && csTree != null) AntlrUtils.AntlrUtils.DumpNodes(csTree); // ASTNode t = parseFile(f, s); // if (t != null) diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/PreProcessor.cs b/CSharpTranslator/antlr3/src/cs2j/CSharp/PreProcessor.cs index 3503e0b..eb2abd2 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/PreProcessor.cs +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/PreProcessor.cs @@ -18,6 +18,13 @@ namespace RusticiSoftware.Translator.CSharp { // if there's an #if / #else mismatch, don't complain every token :) bool Warn = true; + private bool _foundMeat = false; + public bool FoundMeat + { + get { return _foundMeat; } + set { _foundMeat = value; } + } + public PreProcessor() { @@ -65,6 +72,10 @@ namespace RusticiSoftware.Translator.CSharp { state.token = token; Tokens.Enqueue(token); + if (token.Channel == Token.DEFAULT_CHANNEL) + { + FoundMeat = true; + } } public override IToken NextToken() {