int Scan()
        {
            try {
                for (; ;)
                {
                    int next;
                    state = currentStart;
                    while ((next = NextState()) == goStart)
                    {
                        GetCode();
                    }
                    MarkToken();
                    state = next;
                    GetCode();

                    while ((next = NextState()) > eofNum)
                    {
                        state = next;
                        GetCode();
                    }
                    if (state <= maxAccept)
                    {
                        MarkEnd();

                        #region ActionSwitch

                        #pragma warning disable 162

                        switch (state)
                        {
                        case eofNum:
                            if (yywrap())
                            {
                                return((int)Tokens.EOF);
                            }
                            break;

                        case 1:
                            return((int)Tokens.NUMBER);

                        case 2:
                            int res = ScannerHelper.GetIDToken(yytext);
                            return(res);

                        case 3:
                            return((int)Tokens.SEMICOLON);

                        case 4:
                            return((int)Tokens.BRACKETL);

                        case 5:
                            return((int)Tokens.BRACKETR);

                        case 6:
                            return((int)Tokens.BRACEL);

                        case 7:
                            return((int)Tokens.BRACER);

                        case 8:
                            LexError();
                            return((int)Tokens.EOF);

                        default:
                            break;
                        }

                        #pragma warning restore 162

                        #endregion
                    }
                }
            }
            finally
            {
                yylloc = new LexLocation(tokLin, tokCol, tokELin, tokECol);
            }
        }