Antlr4.Semantics.SemanticPipeline.AssignTokenTypes C# (CSharp) Method

AssignTokenTypes() private method

private AssignTokenTypes ( Grammar g, IList tokensDefs, IList tokenIDs, IList terminals ) : void
g Antlr4.Tool.Grammar
tokensDefs IList
tokenIDs IList
terminals IList
return void
        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);
        }