public static GrammarAST CreateSimpleRuleAST(string name, GrammarAST block, bool fragment) { var adaptor = new grammar_Adaptor(null); GrammarAST modifier = null; if (fragment) { modifier = (GrammarAST)adaptor.Create(FRAGMENT, "fragment"); } /* * EOBAST = block.getLastChild() * ^(RULE[block,"rule"] ID["name"] {modifier} ARG["ARG"] RET["RET"] SCOPE["scope"] {block} EOR[EOBAST,"<end-of-rule>"]) */ GrammarAST rule = (GrammarAST)adaptor.Create(RULE, block.Token, "rule"); adaptor.AddChild(rule, adaptor.Create(ID, name)); if (modifier != null) { adaptor.AddChild(rule, modifier); } adaptor.AddChild(rule, adaptor.Create(ARG, "ARG")); adaptor.AddChild(rule, adaptor.Create(RET, "RET")); adaptor.AddChild(rule, adaptor.Create(SCOPE, "scope")); adaptor.AddChild(rule, block); adaptor.AddChild(rule, adaptor.Create(EOR, block.LastChild.Token, "<end-of-rule>")); return(rule); }
partial void CreateTreeAdaptor(ref ITreeAdaptor adaptor) { adaptor = new grammar_Adaptor(this); }
public static GrammarAST CreateSimpleRuleAST( string name, GrammarAST block, bool fragment ) { var adaptor = new grammar_Adaptor(null); GrammarAST modifier = null; if ( fragment ) { modifier = (GrammarAST)adaptor.Create( FRAGMENT, "fragment" ); } /* * EOBAST = block.getLastChild() * ^(RULE[block,"rule"] ID["name"] {modifier} ARG["ARG"] RET["RET"] SCOPE["scope"] {block} EOR[EOBAST,"<end-of-rule>"]) */ GrammarAST rule = (GrammarAST)adaptor.Create( RULE, block.Token, "rule" ); adaptor.AddChild( rule, adaptor.Create( ID, name ) ); if ( modifier != null ) adaptor.AddChild( rule, modifier ); adaptor.AddChild( rule, adaptor.Create( ARG, "ARG" ) ); adaptor.AddChild( rule, adaptor.Create( RET, "RET" ) ); adaptor.AddChild( rule, adaptor.Create( SCOPE, "scope" ) ); adaptor.AddChild( rule, block ); adaptor.AddChild( rule, adaptor.Create( EOR, block.LastChild.Token, "<end-of-rule>" ) ); return rule; }
partial void InitializeTreeAdaptor() { TreeAdaptor = new grammar_Adaptor( this ); }