Antlr4.Tool.Grammar.GetTokenType C# (CSharp) Method

GetTokenType() public method

public GetTokenType ( string token ) : int
token string
return int
        public virtual int GetTokenType(string token)
        {
            int? I = null;
            if (token[0] == '\'')
            {
                int value;
                if (stringLiteralToTypeMap.TryGetValue(token, out value))
                    I = value;
            }
            else
            {
                // must be a label like ID
                int value;
                if (tokenNameToTypeMap.TryGetValue(token, out value))
                    I = value;
            }

            int i = I ?? TokenConstants.InvalidType;
            //tool.Log("grammar", "grammar type " + type + " " + tokenName + "->" + i);
            return i;
        }

Usage Example

Beispiel #1
0
        internal virtual void AssignTokenTypes(Grammar g, IList<GrammarAST> tokensDefs,
                              IList<GrammarAST> tokenIDs, IList<GrammarAST> terminals)
        {
            //Grammar G = g.getOutermostGrammar(); // put in root, even if imported

            // create token types for tokens { A, B, C } ALIASES
            foreach (GrammarAST alias in tokensDefs)
            {
                if (g.GetTokenType(alias.Text) != TokenConstants.InvalidType)
                {
                    g.tool.errMgr.GrammarError(ErrorType.TOKEN_NAME_REASSIGNMENT, g.fileName, alias.Token, alias.Text);
                }

                g.DefineTokenName(alias.Text);
            }

            // DEFINE TOKEN TYPES FOR TOKEN REFS LIKE ID, INT
            foreach (GrammarAST idAST in tokenIDs)
            {
                if (g.GetTokenType(idAST.Text) == TokenConstants.InvalidType)
                {
                    g.tool.errMgr.GrammarError(ErrorType.IMPLICIT_TOKEN_DEFINITION, g.fileName, idAST.Token, idAST.Text);
                }

                g.DefineTokenName(idAST.Text);
            }

            // VERIFY TOKEN TYPES FOR STRING LITERAL REFS LIKE 'while', ';'
            foreach (GrammarAST termAST in terminals)
            {
                if (termAST.Type != ANTLRParser.STRING_LITERAL)
                {
                    continue;
                }

                if (g.GetTokenType(termAST.Text) == TokenConstants.InvalidType)
                {
                    g.tool.errMgr.GrammarError(ErrorType.IMPLICIT_STRING_DEFINITION, g.fileName, termAST.Token, termAST.Text);
                }
            }

            g.tool.Log("semantics", "tokens=" + g.tokenNameToTypeMap);
            g.tool.Log("semantics", "strings=" + g.stringLiteralToTypeMap);
        }
All Usage Examples Of Antlr4.Tool.Grammar::GetTokenType