[antlr-interest] Beginners Problem: Null Reference Exception
Russell Lear
rrlear at gmail.com
Fri Jul 20 15:20:37 PDT 2012
Not sure if this is the right forum - let me know where I should go if it
isn't.
I just bought the ANTLR reference book and I've been working through the
examples. I'm working in C# with .NET 4.5 and so some things don't work
exactly the same as what's in the book, but for the most part it has been
a lot of fun. However, I do have one issue.
I sometimes get a null reference exception in the parser when I call the
parser with the top-level target at a line that looks like:
root_0 = (CommonTree)adaptor.Nil();
I can fix this fairly easily in my code by setting
parser.TreeAdaptor = new CommonTreeAdaptor();
(TreeAdaptor is a property backed by the field adaptor)
But this seems wrong in that my code probably shouldn't know about, much
less be setting, internal parser variables.
The grammar I'm using comes from tour/trees/Expr.g and the C# code is a
straightforward translation of the Java that's in the book (I've played
with it somewhat so it might not be identical):
ANTLRStringStream input = new ANTLRStringStream(target);
ExprLexer lexer = new ExprLexer(input);
var tokens = new CommonTokenStream(lexer);
var parser = new ExprParser(tokens);
// parser.TreeAdaptor = new CommonTreeAdaptor(); // odd
(required?) addition
var r = parser.prog(); // Exception occurs here
CommonTree t = r.Tree;
var nodes = new CommonTreeNodeStream(t);
Eval walker = new Eval(nodes);
walker.prog();
foreach (var k in walker.memory.Keys) {
Console.WriteLine(" {0} ==> {1}", k,
walker.memory[k]); }
Console.Write("Done ");
Console.ReadKey();
Is this just the way it is? Or am I missing something? Thanks for any
help and direction!
Russell.
More information about the antlr-interest
mailing list