Antlr4.Automata.LexerATNFactory.CheckCommands C# (CSharp) Method

CheckCommands() private method

private CheckCommands ( string command, Antlr.Runtime.IToken commandToken ) : void
command string
commandToken Antlr.Runtime.IToken
return void
        private void CheckCommands(string command, IToken commandToken)
        {
            // Command combinations list: https://github.com/antlr/antlr4/issues/1388#issuecomment-263344701
            if (!command.Equals("pushMode") && !command.Equals("popMode"))
            {
                if (ruleCommands.Contains(command))
                {
                    g.tool.errMgr.GrammarError(ErrorType.DUPLICATED_COMMAND, g.fileName, commandToken, command);
                }

                if (!ruleCommands.Equals("mode"))
                {
                    string firstCommand = null;

                    if (command.Equals("skip"))
                    {
                        if (ruleCommands.Contains("more"))
                        {
                            firstCommand = "more";
                        }
                        else if (ruleCommands.Contains("type"))
                        {
                            firstCommand = "type";
                        }
                        else if (ruleCommands.Contains("channel"))
                        {
                            firstCommand = "channel";
                        }
                    }
                    else if (command.Equals("more"))
                    {
                        if (ruleCommands.Contains("skip"))
                        {
                            firstCommand = "skip";
                        }
                        else if (ruleCommands.Contains("type"))
                        {
                            firstCommand = "type";
                        }
                        else if (ruleCommands.Contains("channel"))
                        {
                            firstCommand = "channel";
                        }
                    }
                    else if (command.Equals("type") || command.Equals("channel"))
                    {
                        if (ruleCommands.Contains("more"))
                        {
                            firstCommand = "more";
                        }
                        else if (ruleCommands.Contains("skip"))
                        {
                            firstCommand = "skip";
                        }
                    }

                    if (firstCommand != null)
                    {
                        g.tool.errMgr.GrammarError(ErrorType.INCOMPATIBLE_COMMANDS, g.fileName, commandToken, firstCommand, command);
                    }
                }
            }

            ruleCommands.Add(command);
        }