blob: 1b73994a955985101415289b23a451f60a8f76c5 [file] [log] [blame]
using Lucene.Net.Support.IO;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using Console = Lucene.Net.Util.SystemConsole;
namespace Lucene.Net.QueryParsers.Flexible.Standard.Parser
{
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/// <summary>
/// Token Manager.
/// </summary>
[SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "This class is based on generated code")]
[SuppressMessage("Style", "IDE0059:Unnecessary assignment of a value", Justification = "This class is based on generated code")]
public class StandardSyntaxParserTokenManager /*: StandardSyntaxParserConstants*/
{
/// <summary>Debug output.</summary>
#pragma warning disable IDE0052 // Remove unread private members
private TextWriter debugStream = Console.Out; // LUCENENET specific - made private, since we already have a setter
#pragma warning restore IDE0052 // Remove unread private members
/// <summary>Set debug output.</summary>
public void SetDebugStream(TextWriter ds) { debugStream = new SafeTextWriterWrapper(ds); }
private int JjStopStringLiteralDfa_2(int pos, long active0)
{
switch (pos)
{
default:
return -1;
}
}
private int JjStartNfa_2(int pos, long active0)
{
return JjMoveNfa_2(JjStopStringLiteralDfa_2(pos, active0), pos + 1);
}
private int JjStopAtPos(int pos, int kind)
{
jjmatchedKind = kind;
jjmatchedPos = pos;
return pos + 1;
}
private int JjMoveStringLiteralDfa0_2()
{
switch ((int)m_curChar)
{
case 40:
return JjStopAtPos(0, 13);
case 41:
return JjStopAtPos(0, 14);
case 43:
return JjStopAtPos(0, 11);
case 45:
return JjStopAtPos(0, 12);
case 58:
return JjStopAtPos(0, 15);
case 60:
jjmatchedKind = 17;
return JjMoveStringLiteralDfa1_2(0x40000L);
case 61:
return JjStopAtPos(0, 16);
case 62:
jjmatchedKind = 19;
return JjMoveStringLiteralDfa1_2(0x100000L);
case 91:
return JjStopAtPos(0, 26);
case 94:
return JjStopAtPos(0, 21);
case 123:
return JjStopAtPos(0, 27);
default:
return JjMoveNfa_2(0, 0);
}
}
private int JjMoveStringLiteralDfa1_2(long active0)
{
try { m_curChar = m_input_stream.ReadChar(); }
#pragma warning disable 168
catch (IOException e)
#pragma warning restore 168
{
JjStopStringLiteralDfa_2(0, active0);
return 1;
}
switch ((int)m_curChar)
{
case 61:
if ((active0 & 0x40000L) != 0L)
return JjStopAtPos(1, 18);
else if ((active0 & 0x100000L) != 0L)
return JjStopAtPos(1, 20);
break;
default:
break;
}
return JjStartNfa_2(0, active0);
}
internal static readonly ulong[] jjbitVec0 = {
0x1L, 0x0L, 0x0L, 0x0L
};
internal static readonly ulong[] jjbitVec1 = {
0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
};
internal static readonly ulong[] jjbitVec3 = {
0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
};
internal static readonly ulong[] jjbitVec4 = {
0xfffefffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
};
private int JjMoveNfa_2(int startState, int curPos)
{
int startsAt = 0;
jjnewStateCnt = 33;
int i = 1;
jjstateSet[0] = startState;
int kind = 0x7fffffff;
for (;;)
{
if (++jjround == 0x7fffffff)
ReInitRounds();
if (m_curChar < 64)
{
ulong l = (ulong)(1L << m_curChar);
do
{
switch (jjstateSet[--i])
{
case 0:
if ((0x8bff54f8ffffd9ffL & l) != 0L)
{
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
}
else if ((0x100002600L & l) != 0L)
{
if (kind > 7)
kind = 7;
}
else if (m_curChar == 47)
JjCheckNAddStates(0, 2);
else if (m_curChar == 34)
JjCheckNAddStates(3, 5);
else if (m_curChar == 33)
{
if (kind > 10)
kind = 10;
}
if (m_curChar == 38)
jjstateSet[jjnewStateCnt++] = 4;
break;
case 4:
if (m_curChar == 38 && kind > 8)
kind = 8;
break;
case 5:
if (m_curChar == 38)
jjstateSet[jjnewStateCnt++] = 4;
break;
case 13:
if (m_curChar == 33 && kind > 10)
kind = 10;
break;
case 14:
if (m_curChar == 34)
JjCheckNAddStates(3, 5);
break;
case 15:
if ((0xfffffffbffffffffL & l) != 0L)
JjCheckNAddStates(3, 5);
break;
case 17:
JjCheckNAddStates(3, 5);
break;
case 18:
if (m_curChar == 34 && kind > 22)
kind = 22;
break;
case 19:
if ((0x8bff54f8ffffd9ffL & l) == 0L)
break;
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
break;
case 20:
if ((0x8bff7cf8ffffd9ffL & l) == 0L)
break;
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
break;
case 22:
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
break;
case 25:
if ((0x3ff000000000000L & l) == 0L)
break;
if (kind > 24)
kind = 24;
JjAddStates(6, 7);
break;
case 26:
if (m_curChar == 46)
JjCheckNAdd(27);
break;
case 27:
if ((0x3ff000000000000L & l) == 0L)
break;
if (kind > 24)
kind = 24;
JjCheckNAdd(27);
break;
case 28:
case 30:
if (m_curChar == 47)
JjCheckNAddStates(0, 2);
break;
case 29:
if ((0xffff7fffffffffffL & l) != 0L)
JjCheckNAddStates(0, 2);
break;
case 32:
if (m_curChar == 47 && kind > 25)
kind = 25;
break;
default: break;
}
} while (i != startsAt);
}
else if (m_curChar < 128)
{
//long l = 1L << (curChar & 077);
ulong l = (ulong)(1L << (m_curChar & 63));
do
{
switch (jjstateSet[--i])
{
case 0:
if ((0x97ffffff87ffffffL & l) != 0L)
{
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
}
else if (m_curChar == 126)
{
if (kind > 24)
kind = 24;
jjstateSet[jjnewStateCnt++] = 25;
}
else if (m_curChar == 92)
JjCheckNAdd(22);
if (m_curChar == 78)
jjstateSet[jjnewStateCnt++] = 11;
else if (m_curChar == 124)
jjstateSet[jjnewStateCnt++] = 8;
else if (m_curChar == 79)
jjstateSet[jjnewStateCnt++] = 6;
else if (m_curChar == 65)
jjstateSet[jjnewStateCnt++] = 2;
break;
case 1:
if (m_curChar == 68 && kind > 8)
kind = 8;
break;
case 2:
if (m_curChar == 78)
jjstateSet[jjnewStateCnt++] = 1;
break;
case 3:
if (m_curChar == 65)
jjstateSet[jjnewStateCnt++] = 2;
break;
case 6:
if (m_curChar == 82 && kind > 9)
kind = 9;
break;
case 7:
if (m_curChar == 79)
jjstateSet[jjnewStateCnt++] = 6;
break;
case 8:
if (m_curChar == 124 && kind > 9)
kind = 9;
break;
case 9:
if (m_curChar == 124)
jjstateSet[jjnewStateCnt++] = 8;
break;
case 10:
if (m_curChar == 84 && kind > 10)
kind = 10;
break;
case 11:
if (m_curChar == 79)
jjstateSet[jjnewStateCnt++] = 10;
break;
case 12:
if (m_curChar == 78)
jjstateSet[jjnewStateCnt++] = 11;
break;
case 15:
if ((0xffffffffefffffffL & l) != 0L)
JjCheckNAddStates(3, 5);
break;
case 16:
if (m_curChar == 92)
jjstateSet[jjnewStateCnt++] = 17;
break;
case 17:
JjCheckNAddStates(3, 5);
break;
case 19:
case 20:
if ((0x97ffffff87ffffffL & l) == 0L)
break;
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
break;
case 21:
if (m_curChar == 92)
JjCheckNAddTwoStates(22, 22);
break;
case 22:
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
break;
case 23:
if (m_curChar == 92)
JjCheckNAdd(22);
break;
case 24:
if (m_curChar != 126)
break;
if (kind > 24)
kind = 24;
jjstateSet[jjnewStateCnt++] = 25;
break;
case 29:
JjAddStates(0, 2);
break;
case 31:
if (m_curChar == 92)
jjstateSet[jjnewStateCnt++] = 30;
break;
default: break;
}
} while (i != startsAt);
}
else
{
int hiByte = (int)(m_curChar >> 8);
int i1 = hiByte >> 6;
//long l1 = 1L << (hiByte & 077);
ulong l1 = (ulong)(1L << (hiByte & 63));
int i2 = (m_curChar & 0xff) >> 6;
//long l2 = 1L << (curChar & 077);
ulong l2 = (ulong)(1L << (m_curChar & 63));
do
{
switch (jjstateSet[--i])
{
case 0:
if (JjCanMove_0(hiByte, i1, i2, l1, l2))
{
if (kind > 7)
kind = 7;
}
if (JjCanMove_2(hiByte, i1, i2, l1, l2))
{
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
}
break;
case 15:
case 17:
if (JjCanMove_1(hiByte, i1, i2, l1, l2))
JjCheckNAddStates(3, 5);
break;
case 19:
case 20:
if (!JjCanMove_2(hiByte, i1, i2, l1, l2))
break;
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
break;
case 22:
if (!JjCanMove_1(hiByte, i1, i2, l1, l2))
break;
if (kind > 23)
kind = 23;
JjCheckNAddTwoStates(20, 21);
break;
case 29:
if (JjCanMove_1(hiByte, i1, i2, l1, l2))
JjAddStates(0, 2);
break;
default: break;
}
} while (i != startsAt);
}
if (kind != 0x7fffffff)
{
jjmatchedKind = kind;
jjmatchedPos = curPos;
kind = 0x7fffffff;
}
++curPos;
if ((i = jjnewStateCnt) == (startsAt = 33 - (jjnewStateCnt = startsAt)))
return curPos;
try { m_curChar = m_input_stream.ReadChar(); }
#pragma warning disable 168
catch (IOException e) { return curPos; }
#pragma warning restore 168
}
}
private int JjMoveStringLiteralDfa0_0()
{
return JjMoveNfa_0(0, 0);
}
private int JjMoveNfa_0(int startState, int curPos)
{
int startsAt = 0;
jjnewStateCnt = 3;
int i = 1;
jjstateSet[0] = startState;
int kind = 0x7fffffff;
for (;;)
{
if (++jjround == 0x7fffffff)
ReInitRounds();
if (m_curChar < 64)
{
long l = 1L << m_curChar;
do
{
switch (jjstateSet[--i])
{
case 0:
if ((0x3ff000000000000L & l) == 0L)
break;
if (kind > 28)
kind = 28;
JjAddStates(8, 9);
break;
case 1:
if (m_curChar == 46)
JjCheckNAdd(2);
break;
case 2:
if ((0x3ff000000000000L & l) == 0L)
break;
if (kind > 28)
kind = 28;
JjCheckNAdd(2);
break;
default: break;
}
} while (i != startsAt);
}
else if (m_curChar < 128)
{
//long l = 1L << (curChar & 077);
long l = 1L << (m_curChar & 63);
do
{
switch (jjstateSet[--i])
{
default: break;
}
} while (i != startsAt);
}
else
{
int hiByte = (int)(m_curChar >> 8);
int i1 = hiByte >> 6;
//long l1 = 1L << (hiByte & 077);
long l1 = 1L << (hiByte & 63);
int i2 = (m_curChar & 0xff) >> 6;
//long l2 = 1L << (curChar & 077);
long l2 = 1L << (m_curChar & 63);
do
{
switch (jjstateSet[--i])
{
default: break;
}
} while (i != startsAt);
}
if (kind != 0x7fffffff)
{
jjmatchedKind = kind;
jjmatchedPos = curPos;
kind = 0x7fffffff;
}
++curPos;
if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
return curPos;
try { m_curChar = m_input_stream.ReadChar(); }
#pragma warning disable 168
catch (IOException e) { return curPos; }
#pragma warning restore 168
}
}
private int JjStopStringLiteralDfa_1(int pos, long active0)
{
switch (pos)
{
case 0:
if ((active0 & 0x20000000L) != 0L)
{
jjmatchedKind = 33;
return 6;
}
return -1;
default:
return -1;
}
}
private int JjStartNfa_1(int pos, long active0)
{
return JjMoveNfa_1(JjStopStringLiteralDfa_1(pos, active0), pos + 1);
}
private int JjMoveStringLiteralDfa0_1()
{
switch ((int)m_curChar)
{
case 84:
return JjMoveStringLiteralDfa1_1(0x20000000L);
case 93:
return JjStopAtPos(0, 30);
case 125:
return JjStopAtPos(0, 31);
default:
return JjMoveNfa_1(0, 0);
}
}
private int JjMoveStringLiteralDfa1_1(long active0)
{
try { m_curChar = m_input_stream.ReadChar(); }
#pragma warning disable 168
catch (IOException e)
#pragma warning restore 168
{
JjStopStringLiteralDfa_1(0, active0);
return 1;
}
switch ((int)m_curChar)
{
case 79:
if ((active0 & 0x20000000L) != 0L)
return JjStartNfaWithStates_1(1, 29, 6);
break;
default:
break;
}
return JjStartNfa_1(0, active0);
}
private int JjStartNfaWithStates_1(int pos, int kind, int state)
{
jjmatchedKind = kind;
jjmatchedPos = pos;
try { m_curChar = m_input_stream.ReadChar(); }
#pragma warning disable 168
catch (IOException e) { return pos + 1; }
#pragma warning restore 168
return JjMoveNfa_1(state, pos + 1);
}
private int JjMoveNfa_1(int startState, int curPos)
{
int startsAt = 0;
jjnewStateCnt = 7;
int i = 1;
jjstateSet[0] = startState;
int kind = 0x7fffffff;
for (;;)
{
if (++jjround == 0x7fffffff)
ReInitRounds();
if (m_curChar < 64)
{
ulong l = (ulong)(1L << m_curChar);
do
{
switch (jjstateSet[--i])
{
case 0:
if ((0xfffffffeffffffffL & l) != 0L)
{
if (kind > 33)
kind = 33;
JjCheckNAdd(6);
}
if ((0x100002600L & l) != 0L)
{
if (kind > 7)
kind = 7;
}
else if (m_curChar == 34)
JjCheckNAddTwoStates(2, 4);
break;
case 1:
if (m_curChar == 34)
JjCheckNAddTwoStates(2, 4);
break;
case 2:
if ((0xfffffffbffffffffL & l) != 0L)
JjCheckNAddStates(10, 12);
break;
case 3:
if (m_curChar == 34)
JjCheckNAddStates(10, 12);
break;
case 5:
if (m_curChar == 34 && kind > 32)
kind = 32;
break;
case 6:
if ((0xfffffffeffffffffL & l) == 0L)
break;
if (kind > 33)
kind = 33;
JjCheckNAdd(6);
break;
default: break;
}
} while (i != startsAt);
}
else if (m_curChar < 128)
{
//long l = 1L << (curChar & 077);
ulong l = (ulong)(1L << (m_curChar & 63));
do
{
switch (jjstateSet[--i])
{
case 0:
case 6:
if ((0xdfffffffdfffffffL & l) == 0L)
break;
if (kind > 33)
kind = 33;
JjCheckNAdd(6);
break;
case 2:
JjAddStates(10, 12);
break;
case 4:
if (m_curChar == 92)
jjstateSet[jjnewStateCnt++] = 3;
break;
default: break;
}
} while (i != startsAt);
}
else
{
int hiByte = (int)(m_curChar >> 8);
int i1 = hiByte >> 6;
//long l1 = 1L << (hiByte & 077);
ulong l1 = (ulong)(1L << (hiByte & 63));
int i2 = (m_curChar & 0xff) >> 6;
//long l2 = 1L << (curChar & 077);
ulong l2 = (ulong)(1L << (m_curChar & 63));
do
{
switch (jjstateSet[--i])
{
case 0:
if (JjCanMove_0(hiByte, i1, i2, l1, l2))
{
if (kind > 7)
kind = 7;
}
if (JjCanMove_1(hiByte, i1, i2, l1, l2))
{
if (kind > 33)
kind = 33;
JjCheckNAdd(6);
}
break;
case 2:
if (JjCanMove_1(hiByte, i1, i2, l1, l2))
JjAddStates(10, 12);
break;
case 6:
if (!JjCanMove_1(hiByte, i1, i2, l1, l2))
break;
if (kind > 33)
kind = 33;
JjCheckNAdd(6);
break;
default: break;
}
} while (i != startsAt);
}
if (kind != 0x7fffffff)
{
jjmatchedKind = kind;
jjmatchedPos = curPos;
kind = 0x7fffffff;
}
++curPos;
if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
return curPos;
try { m_curChar = m_input_stream.ReadChar(); }
#pragma warning disable 168
catch (IOException e) { return curPos; }
#pragma warning restore 168
}
}
internal static readonly int[] jjnextStates = {
29, 31, 32, 15, 16, 18, 25, 26, 0, 1, 2, 4, 5,
};
private static bool JjCanMove_0(int hiByte, int i1, int i2, ulong l1, ulong l2)
{
switch (hiByte)
{
case 48:
return ((jjbitVec0[i2] & l2) != 0L);
default:
return false;
}
}
private static bool JjCanMove_1(int hiByte, int i1, int i2, ulong l1, ulong l2)
{
switch (hiByte)
{
case 0:
return ((jjbitVec3[i2] & l2) != 0L);
default:
if ((jjbitVec1[i1] & l1) != 0L)
return true;
return false;
}
}
private static bool JjCanMove_2(int hiByte, int i1, int i2, ulong l1, ulong l2)
{
switch (hiByte)
{
case 0:
return ((jjbitVec3[i2] & l2) != 0L);
case 48:
return ((jjbitVec1[i2] & l2) != 0L);
default:
if ((jjbitVec4[i1] & l1) != 0L)
return true;
return false;
}
}
/// <summary>Token literal values.</summary>
public static readonly string[] jjstrLiteralImages = {
"", null, null, null, null, null, null, null, null, null, null, "\x002B", "\x002D",
"\x0028", "\x0029", "\x003A", "\x003D", "\x003C", "\x003C\x003D", "\x003E", "\x003E\x003D", "\x005E", null, null,
null, null, "\x005B", "\x007B", null, "\x0054\x004F", "\x005D", "\x007D", null, null,
};
/// <summary>Lexer state names.</summary>
public static readonly string[] lexStateNames = {
"Boost",
"Range",
"DEFAULT",
};
/// <summary>Lex State array.</summary>
public static readonly int[] jjnewLexState = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
-1, 1, 1, 2, -1, 2, 2, -1, -1,
};
private static readonly long[] jjtoToken = {
0x3ffffff01L,
};
//static readonly long[] jjtoSkip = { // LUCENENET: Never read
// 0x80L,
//};
protected ICharStream m_input_stream;
private readonly uint[] jjrounds = new uint[33];
private readonly int[] jjstateSet = new int[66];
protected char m_curChar;
/// <summary>Constructor.</summary>
public StandardSyntaxParserTokenManager(ICharStream stream)
{
m_input_stream = stream;
}
/// <summary>Constructor.</summary>
public StandardSyntaxParserTokenManager(ICharStream stream, int lexState)
: this(stream)
{
SwitchTo(lexState);
}
/// <summary>Reinitialize parser.</summary>
public void ReInit(ICharStream stream)
{
jjmatchedPos = jjnewStateCnt = 0;
curLexState = defaultLexState;
m_input_stream = stream;
ReInitRounds();
}
private void ReInitRounds()
{
int i;
jjround = 0x80000001;
for (i = 33; i-- > 0;)
jjrounds[i] = 0x80000000;
}
/// <summary>Reinitialize parser.</summary>
public void ReInit(ICharStream stream, int lexState)
{
ReInit(stream);
SwitchTo(lexState);
}
/// <summary>Switch to specified lex state.</summary>
public void SwitchTo(int lexState)
{
if (lexState >= 3 || lexState < 0)
throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
else
curLexState = lexState;
}
protected Token JjFillToken()
{
Token t;
string curTokenImage;
int beginLine;
int endLine;
int beginColumn;
int endColumn;
string im = jjstrLiteralImages[jjmatchedKind];
curTokenImage = im ?? m_input_stream.GetImage();
beginLine = m_input_stream.BeginLine;
beginColumn = m_input_stream.BeginColumn;
endLine = m_input_stream.EndLine;
endColumn = m_input_stream.EndColumn;
t = Token.NewToken(jjmatchedKind, curTokenImage);
t.BeginLine = beginLine;
t.EndLine = endLine;
t.BeginColumn = beginColumn;
t.EndColumn = endColumn;
return t;
}
internal int curLexState = 2;
internal int defaultLexState = 2;
internal int jjnewStateCnt;
internal uint jjround;
internal int jjmatchedPos;
internal int jjmatchedKind;
/// <summary>Get the next Token.</summary>
public virtual Token GetNextToken()
{
Token matchedToken;
int curPos = 0;
for (;;)
{
try
{
m_curChar = m_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)
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_continue;
}
}
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); }
#pragma warning disable 168
catch (IOException e1)
#pragma warning restore 168
{
EOFSeen = true;
error_after = curPos <= 1 ? "" : m_input_stream.GetImage();
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.GetImage();
}
throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, m_curChar, TokenMgrError.LEXICAL_ERROR);
EOFLoop_continue: { }
}
}
private void JjCheckNAdd(int state)
{
if (jjrounds[state] != jjround)
{
jjstateSet[jjnewStateCnt++] = state;
jjrounds[state] = jjround;
}
}
private void JjAddStates(int start, int end)
{
do
{
jjstateSet[jjnewStateCnt++] = jjnextStates[start];
} while (start++ != end);
}
private void JjCheckNAddTwoStates(int state1, int state2)
{
JjCheckNAdd(state1);
JjCheckNAdd(state2);
}
private void JjCheckNAddStates(int start, int end)
{
do
{
JjCheckNAdd(jjnextStates[start]);
} while (start++ != end);
}
}
}