public void stripSynPred(GrammarAST altAST) { GrammarAST t = (GrammarAST)altAST.getChild(0); if ( t.getType()==ANTLRParser.BACKTRACK_SEMPRED || t.getType()==ANTLRParser.SYNPRED || t.getType()==ANTLRParser.SYN_SEMPRED ) { altAST.deleteChild(0); // kill it } }
public void stripSynPred(GrammarAST altAST) { GrammarAST t = (GrammarAST)altAST.getChild(0); if ( t.getType()==ANTLRParser.BACKTRACK_SEMPRED || t.getType()==ANTLRParser.SYNPRED || t.getType()==ANTLRParser.SYN_SEMPRED ) { altAST.deleteChild(0); // kill it } }
public void stripLeftRecursion(GrammarAST altAST) { GrammarAST rref = (GrammarAST)altAST.getChild(0); if ( rref.getType()== ANTLRParser.RULE_REF && rref.getText().equals(ruleName)) { // remove rule ref altAST.deleteChild(0); // reset index so it prints properly GrammarAST newFirstChild = (GrammarAST) altAST.getChild(0); altAST.setTokenStartIndex(newFirstChild.getTokenStartIndex()); } }
public void stripLeftRecursion(GrammarAST altAST) { GrammarAST rref = (GrammarAST)altAST.getChild(0); if ( rref.getType()== ANTLRParser.RULE_REF && rref.getText().equals(ruleName)) { // remove rule ref altAST.deleteChild(0); // reset index so it prints properly GrammarAST newFirstChild = (GrammarAST) altAST.getChild(0); altAST.setTokenStartIndex(newFirstChild.getTokenStartIndex()); } }
/** Remove any lexer rules from a COMBINED; already passed to lexer */ protected final void trimGrammar() { if ( grammar.type != Grammar.COMBINED ) { return; } // form is (header ... ) ( grammar ID (scope ...) ... ( rule ... ) ( rule ... ) ... ) GrammarAST p = root; // find the grammar spec while ( !p.getText().equals( "grammar" ) ) { p = p.getNextSibling(); } for ( int i = 0; i < p.getChildCount(); i++ ) { if ( p.getChild( i ).getType() != RULE ) continue; String ruleName = p.getChild(i).getChild(0).getText(); //Console.Out.WriteLine( "rule " + ruleName + " prev=" + prev.getText() ); if (Rule.getRuleType(ruleName) == Grammar.LEXER) { // remove lexer rule p.deleteChild( i ); i--; } } //Console.Out.WriteLine( "root after removal is: " + root.ToStringList() ); }
/** Remove any lexer rules from a COMBINED; already passed to lexer */ protected final void trimGrammar() { if ( grammar.type != Grammar.COMBINED ) { return; } // form is (header ... ) ( grammar ID (scope ...) ... ( rule ... ) ( rule ... ) ... ) GrammarAST p = root; // find the grammar spec while ( !p.getText().equals( "grammar" ) ) { p = p.getNextSibling(); } for ( int i = 0; i < p.getChildCount(); i++ ) { if ( p.getChild( i ).getType() != RULE ) continue; String ruleName = p.getChild(i).getChild(0).getText(); //Console.Out.WriteLine( "rule " + ruleName + " prev=" + prev.getText() ); if (Rule.getRuleType(ruleName) == Grammar.LEXER) { // remove lexer rule p.deleteChild( i ); i--; } } //Console.Out.WriteLine( "root after removal is: " + root.ToStringList() ); }