internal virtual bool CheckElementOptions(GrammarASTWithOptions elem,
GrammarAST ID,
GrammarAST valueAST)
{
if (checkAssocElementOption && ID != null && "assoc".Equals(ID.Text))
{
if (elem.Type != ANTLRParser.ALT)
{
IToken optionID = ID.Token;
string fileName = optionID.InputStream.SourceName;
g.tool.errMgr.GrammarError(ErrorType.UNRECOGNIZED_ASSOC_OPTION,
fileName,
optionID,
currentRuleName);
}
}
if (elem is RuleRefAST)
{
return CheckRuleRefOptions((RuleRefAST)elem, ID, valueAST);
}
if (elem is TerminalAST)
{
return CheckTokenOptions((TerminalAST)elem, ID, valueAST);
}
if (elem.Type == ANTLRParser.ACTION)
{
return false;
}
if (elem.Type == ANTLRParser.SEMPRED)
{
IToken optionID = ID.Token;
string fileName = optionID.InputStream.SourceName;
if (valueAST != null && !Grammar.semPredOptions.Contains(optionID.Text))
{
g.tool.errMgr.GrammarError(ErrorType.ILLEGAL_OPTION,
fileName,
optionID,
optionID.Text);
return false;
}
}
return false;
}