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);
        }
Beispiel #2
0
 partial void CreateTreeAdaptor(ref ITreeAdaptor adaptor)
 {
     adaptor = new grammar_Adaptor(this);
 }
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;
        }
Beispiel #5
0
partial         void InitializeTreeAdaptor()
        {
            TreeAdaptor = new grammar_Adaptor( this );
        }