Beispiel #1
0
        public virtual Token GetNextToken()
        {
            Token matchedToken;
            int   curPos = 0;

            for (; ;)
            {
                try
                {
                    m_curChar = m_input_stream.BeginToken();
                }
                catch (System.IO.IOException /*e*/)
                {
                    jjmatchedKind = 0;
                    matchedToken  = JjFillToken();
                    return(matchedToken);
                }

                switch (curLexState)
                {
                case 0:
                    jjmatchedKind = 0x7fffffff;
                    jjmatchedPos  = 0;
                    curPos        = JjMoveStringLiteralDfa0_0();
                    break;

                case 1:
                    jjmatchedKind = 0x7fffffff;
                    jjmatchedPos  = 0;
                    curPos        = jjMoveStringLiteralDfa0_1();
                    break;
                }
                if (jjmatchedKind != 0x7fffffff)
                {
                    if (jjmatchedPos + 1 < curPos)
                    {
                        m_input_stream.BackUp(curPos - jjmatchedPos - 1);
                    }
                    if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 63 /*077*/))) != 0L)
                    {
                        matchedToken = JjFillToken();
                        if (jjnewLexState[jjmatchedKind] != -1)
                        {
                            curLexState = jjnewLexState[jjmatchedKind];
                        }
                        return(matchedToken);
                    }
                    else
                    {
                        if (jjnewLexState[jjmatchedKind] != -1)
                        {
                            curLexState = jjnewLexState[jjmatchedKind];
                        }
                        goto EOFLoop;
                    }
                }
                int    error_line   = m_input_stream.EndLine;
                int    error_column = m_input_stream.EndColumn;
                string error_after  = null;
                bool   EOFSeen      = false;
                try { m_input_stream.ReadChar(); m_input_stream.BackUp(1); }
                catch (System.IO.IOException /*e1*/)
                {
                    EOFSeen     = true;
                    error_after = curPos <= 1 ? "" : m_input_stream.Image;
                    if (m_curChar == '\n' || m_curChar == '\r')
                    {
                        error_line++;
                        error_column = 0;
                    }
                    else
                    {
                        error_column++;
                    }
                }
                if (!EOFSeen)
                {
                    m_input_stream.BackUp(1);
                    error_after = curPos <= 1 ? "" : m_input_stream.Image;
                }
                throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, m_curChar, TokenMgrError.LEXICAL_ERROR);
                EOFLoop :;
            }
        }
        /// <summary>Get the next Token.</summary>
        public virtual Token GetNextToken()
        {
            Token matchedToken;
            int   curPos = 0;


            for (;;)
            {
                try
                {
                    curChar = input_stream.BeginToken();
                }
#pragma warning disable 168
                catch (IOException e)
#pragma warning restore 168
                {
                    jjmatchedKind = 0;
                    matchedToken  = JjFillToken();
                    return(matchedToken);
                }

                switch (curLexState)
                {
                case 0:
                    jjmatchedKind = 0x7fffffff;
                    jjmatchedPos  = 0;
                    curPos        = JjMoveStringLiteralDfa0_0();
                    break;

                case 1:
                    jjmatchedKind = 0x7fffffff;
                    jjmatchedPos  = 0;
                    curPos        = JjMoveStringLiteralDfa0_1();
                    break;

                case 2:
                    jjmatchedKind = 0x7fffffff;
                    jjmatchedPos  = 0;
                    curPos        = JjMoveStringLiteralDfa0_2();
                    break;
                }
                if (jjmatchedKind != 0x7fffffff)
                {
                    if (jjmatchedPos + 1 < curPos)
                    {
                        input_stream.BackUp(curPos - jjmatchedPos - 1);
                    }
                    if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 63 /*077*/))) != 0L)
                    {
                        matchedToken = JjFillToken();
                        if (jjnewLexState[jjmatchedKind] != -1)
                        {
                            curLexState = jjnewLexState[jjmatchedKind];
                        }
                        return(matchedToken);
                    }
                    else
                    {
                        if (jjnewLexState[jjmatchedKind] != -1)
                        {
                            curLexState = jjnewLexState[jjmatchedKind];
                        }
                        goto EOFLoop_continue;
                    }
                }
                int    error_line   = input_stream.EndLine;
                int    error_column = input_stream.EndColumn;
                string error_after  = null;
                bool   EOFSeen      = false;
                try { input_stream.ReadChar(); input_stream.BackUp(1); }
#pragma warning disable 168
                catch (IOException e1)
#pragma warning restore 168
                {
                    EOFSeen     = true;
                    error_after = curPos <= 1 ? "" : input_stream.GetImage();
                    if (curChar == '\n' || curChar == '\r')
                    {
                        error_line++;
                        error_column = 0;
                    }
                    else
                    {
                        error_column++;
                    }
                }
                if (!EOFSeen)
                {
                    input_stream.BackUp(1);
                    error_after = curPos <= 1 ? "" : input_stream.GetImage();
                }
                throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);

                EOFLoop_continue : { }
            }
        }