Antlr4.Semantics.BasicSemanticChecks.CheckElementOptions C# (CSharp) Method

CheckElementOptions() private method

private CheckElementOptions ( GrammarASTWithOptions elem, GrammarAST ID, GrammarAST valueAST ) : bool
elem Antlr4.Tool.Ast.GrammarASTWithOptions
ID Antlr4.Tool.Ast.GrammarAST
valueAST Antlr4.Tool.Ast.GrammarAST
return bool
        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;
        }