public GrammarAST AddArtificialMatchTokensRule( GrammarAST grammarAST,
IList<string> ruleNames,
IList<string> delegateNames,
bool filterMode )
{
StringTemplate matchTokenRuleST = null;
if ( filterMode )
{
matchTokenRuleST = new StringTemplate(
ArtificialTokensRuleName +
" options {k=1; backtrack=true;} : <rules; separator=\"|\">;");
}
else
{
matchTokenRuleST = new StringTemplate(
ArtificialTokensRuleName + " : <rules; separator=\"|\">;");
}
// Now add token rule references
for ( int i = 0; i < ruleNames.Count; i++ )
{
string rname = (string)ruleNames[i];
matchTokenRuleST.SetAttribute( "rules", rname );
}
for ( int i = 0; i < delegateNames.Count; i++ )
{
string dname = (string)delegateNames[i];
matchTokenRuleST.SetAttribute( "rules", dname + ".Tokens" );
}
GrammarAST r = ParseArtificialRule(matchTokenRuleST.Render());
AddRule(grammarAST, r);
//addRule((GrammarAST)parser.getAST());
//return (GrammarAST)parser.getAST();
return r;
}