I have a grammar that works and parses in the Irony console just fine, but I don\'t get anything in the AST treeview. I was following along with the BASIC->Javascript article f
Check out the aptly named Sarcasm project for a reference implementation of a grammar, parser, and AST built on Irony. I found this blog entry by the author to be helpful in building the AST.
The following is a general purpose guide to getting the AST up and running.
MyBaseNode
) deriving from AstNode
(example). Copy/Paste the methods from the exampleFor each terminal and non-terminal create a new class derived from MyBaseNode
and
Accept
method (example): public override void Accept(IMyNodeVisitor visitor) { visitor.Visit(this); }
Add an interface IMyNodeVisitor
and add a Visit
method for each class defined in the previous step (example):
void Visit(MyDerivedNode1 node);
Set the ASTNodeType
for each of your terminals and non-terminals in your grammar from step 1.
For terminals - (example)
MyTerminal1.AstConfig.NodeType = typeof(MyDerivedNode1);
For non-terminals - (example)
var MyNonTerminal2 = new NonTerminal("MyNonTerminal2", typeof(MyDerivedNode2));
In the grammar enable AST creation: (example)
LanguageFlags = LanguageFlags.CreateAst;