blob: efb05f5063ac168221f1fe28052c10e11a166101 [file] [log] [blame]
/* Generated By:CSharpCC: Do not edit this line. SelectorParser.cs */
/*
* 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.
*/
using System;
using System.IO;
using System.Text;
using System.Collections;
using Apache.NMS;
namespace Apache.NMS.Selector
{
/// <summary>
/// JMS Selector Parser generated by <a href="https://github.com/deveel/csharpcc">CSharpCC</a>
///
/// Do not edit this .cs file directly - it is autogenerated from SelectorParser.csc
/// using <c>csharpcc.exe -UNICODE_INPUT=true SelectorParser.csc</c>.
///
/// SelectorParser.csc is adapted from
/// <a href="https://raw.githubusercontent.com/apache/activemq/activemq-4.0/activemq-core/src/main/grammar/SelectorParser.jj">
/// ActiveMQ 4.0 SelectorParser.jj</a>
/// </summary>
public class SelectorParser : SelectorParserConstants {
public SelectorParser()
: this(new StringReader(""))
{
}
public IBooleanExpression Parse(string selector)
{
this.ReInit(new StringReader(selector));
try
{
return this.JmsSelector();
}
catch(Exception e)
{
throw new InvalidSelectorException(selector, e);
}
}
private IBooleanExpression AsBooleanExpression(IExpression value)
{
if(value is IBooleanExpression)
{
return (IBooleanExpression)value;
}
if(value is PropertyExpression)
{
return UnaryExpression.CreateBooleanCast(value);
}
throw new ParseException("IExpression will not result in a boolean value: " + value);
}
// ----------------------------------------------------------------------------
// Grammar
// ----------------------------------------------------------------------------
public IBooleanExpression JmsSelector() {
IExpression left = null;
left = GetOrExpression();
{return AsBooleanExpression(left);}
throw new Exception("Missing return statement in function");
}
public IExpression GetOrExpression() {
IExpression left;
IExpression right;
left = GetAndExpression();
while (true) {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case OR:
;
break;
default:
goto label_1;
}
mcc_consume_token(OR);
right = GetAndExpression();
left = LogicExpression.CreateOR(AsBooleanExpression(left), AsBooleanExpression(right));
}label_1: ;
{return left;}
throw new Exception("Missing return statement in function");
}
public IExpression GetAndExpression() {
IExpression left;
IExpression right;
left = GetEqualityExpression();
while (true) {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case AND:
;
break;
default:
goto label_2;
}
mcc_consume_token(AND);
right = GetEqualityExpression();
left = LogicExpression.CreateAND(AsBooleanExpression(left), AsBooleanExpression(right));
}label_2: ;
{return left;}
throw new Exception("Missing return statement in function");
}
public IExpression GetEqualityExpression() {
IExpression left;
IExpression right;
left = GetComparisonExpression();
while (true) {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case IS:
case 28:
case 29:
;
break;
default:
goto label_3;
}
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case 28:
mcc_consume_token(28);
right = GetComparisonExpression();
left = ComparisonExpression.CreateEqual(left, right);
break;
case 29:
mcc_consume_token(29);
right = GetComparisonExpression();
left = ComparisonExpression.CreateNotEqual(left, right);
break;
default:
if (mcc_2_1(2)) {
mcc_consume_token(IS);
mcc_consume_token(NULL);
left = ComparisonExpression.CreateIsNull(left);
} else {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case IS:
mcc_consume_token(IS);
mcc_consume_token(NOT);
mcc_consume_token(NULL);
left = ComparisonExpression.CreateIsNotNull(left);
break;
default:
mcc_consume_token(-1);
throw new ParseException();
}
}
break;
}
}label_3: ;
{return left;}
throw new Exception("Missing return statement in function");
}
public IExpression GetComparisonExpression() {
IExpression left;
IExpression right;
IExpression low;
IExpression high;
string t;
string u;
ArrayList list;
left = GetAddExpression();
while (true) {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case NOT:
case BETWEEN:
case LIKE:
case IN:
case 30:
case 31:
case 32:
case 33:
;
break;
default:
goto label_4;
}
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case 30:
mcc_consume_token(30);
right = GetAddExpression();
left = ComparisonExpression.CreateGreaterThan(left, right);
break;
case 31:
mcc_consume_token(31);
right = GetAddExpression();
left = ComparisonExpression.CreateGreaterThanOrEqual(left, right);
break;
case 32:
mcc_consume_token(32);
right = GetAddExpression();
left = ComparisonExpression.CreateLesserThan(left, right);
break;
case 33:
mcc_consume_token(33);
right = GetAddExpression();
left = ComparisonExpression.CreateLesserThanOrEqual(left, right);
break;
case LIKE:
u = null;
mcc_consume_token(LIKE);
t = GetStringLitteral();
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case ESCAPE:
mcc_consume_token(ESCAPE);
u = GetStringLitteral();
break;
default:
;
break;
}
left = ComparisonExpression.CreateLike(left, t, u);
break;
default:
if (mcc_2_2(2)) {
u=null;
mcc_consume_token(NOT);
mcc_consume_token(LIKE);
t = GetStringLitteral();
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case ESCAPE:
mcc_consume_token(ESCAPE);
u = GetStringLitteral();
break;
default:
;
break;
}
left = ComparisonExpression.CreateNotLike(left, t, u);
} else {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case BETWEEN:
mcc_consume_token(BETWEEN);
low = GetAddExpression();
mcc_consume_token(AND);
high = GetAddExpression();
left = ComparisonExpression.CreateBetween(left, low, high);
break;
default:
if (mcc_2_3(2)) {
mcc_consume_token(NOT);
mcc_consume_token(BETWEEN);
low = GetAddExpression();
mcc_consume_token(AND);
high = GetAddExpression();
left = ComparisonExpression.CreateNotBetween(left, low, high);
} else {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case IN:
mcc_consume_token(IN);
mcc_consume_token(34);
t = GetStringLitteral();
list = new ArrayList();
list.Add(t);
while (true) {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case 35:
;
break;
default:
goto label_5;
}
mcc_consume_token(35);
t = GetStringLitteral();
list.Add(t);
}label_5: ;
mcc_consume_token(36);
left = ComparisonExpression.CreateIn(left, list);
break;
default:
if (mcc_2_4(2)) {
mcc_consume_token(NOT);
mcc_consume_token(IN);
mcc_consume_token(34);
t = GetStringLitteral();
list = new ArrayList();
list.Add(t);
while (true) {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case 35:
;
break;
default:
goto label_6;
}
mcc_consume_token(35);
t = GetStringLitteral();
list.Add(t);
}label_6: ;
mcc_consume_token(36);
left = ComparisonExpression.CreateNotIn(left, list);
} else {
mcc_consume_token(-1);
throw new ParseException();
}
break;
}
}
break;
}
}
break;
}
}label_4: ;
{return left;}
throw new Exception("Missing return statement in function");
}
public IExpression GetAddExpression() {
IExpression left;
IExpression right;
left = GetMultiplyExpression();
while (true) {
if (mcc_2_5(2147483647)) {
;
} else {
goto label_7;
}
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case 37:
mcc_consume_token(37);
right = GetMultiplyExpression();
left = ArithmeticExpression.CreatePlus(left, right);
break;
case 38:
mcc_consume_token(38);
right = GetMultiplyExpression();
left = ArithmeticExpression.CreateMinus(left, right);
break;
default:
mcc_consume_token(-1);
throw new ParseException();
}
}label_7: ;
{return left;}
throw new Exception("Missing return statement in function");
}
public IExpression GetMultiplyExpression() {
IExpression left;
IExpression right;
left = GetUnaryExpression();
while (true) {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case 39:
case 40:
case 41:
;
break;
default:
goto label_8;
}
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case 39:
mcc_consume_token(39);
right = GetUnaryExpression();
left = ArithmeticExpression.CreateMultiply(left, right);
break;
case 40:
mcc_consume_token(40);
right = GetUnaryExpression();
left = ArithmeticExpression.CreateDivide(left, right);
break;
case 41:
mcc_consume_token(41);
right = GetUnaryExpression();
left = ArithmeticExpression.CreateMod(left, right);
break;
default:
mcc_consume_token(-1);
throw new ParseException();
}
}label_8: ;
{return left;}
throw new Exception("Missing return statement in function");
}
public IExpression GetUnaryExpression() {
IExpression left = null;
if (mcc_2_6(2147483647)) {
mcc_consume_token(37);
left = GetUnaryExpression();
} else {
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case 38:
mcc_consume_token(38);
left = GetUnaryExpression();
left = UnaryExpression.CreateNegate(left);
break;
case NOT:
mcc_consume_token(NOT);
left = GetUnaryExpression();
left = UnaryExpression.CreateNOT(AsBooleanExpression(left));
break;
case TRUE:
case FALSE:
case NULL:
case DECIMAL_LITERAL:
case HEX_LITERAL:
case OCTAL_LITERAL:
case FLOATING_POINT_LITERAL:
case STRING_LITERAL:
case ID:
case 34:
left = GetPrimaryExpression();
break;
default:
mcc_consume_token(-1);
throw new ParseException();
}
}
{return left;}
throw new Exception("Missing return statement in function");
}
public IExpression GetPrimaryExpression() {
IExpression left = null;
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case TRUE:
case FALSE:
case NULL:
case DECIMAL_LITERAL:
case HEX_LITERAL:
case OCTAL_LITERAL:
case FLOATING_POINT_LITERAL:
case STRING_LITERAL:
left = GetLiteral();
break;
case ID:
left = GetVariable();
break;
case 34:
mcc_consume_token(34);
left = GetOrExpression();
mcc_consume_token(36);
break;
default:
mcc_consume_token(-1);
throw new ParseException();
}
{return left;}
throw new Exception("Missing return statement in function");
}
public ConstantExpression GetLiteral() {
Token t;
string s;
ConstantExpression left = null;
switch ((mcc_ntk==-1)?mcc_mntk():mcc_ntk) {
case STRING_LITERAL:
s = GetStringLitteral();
left = new ConstantExpression(s);
break;
case DECIMAL_LITERAL:
t = mcc_consume_token(DECIMAL_LITERAL);
left = ConstantExpression.CreateFromDecimal(t.image);
break;
case HEX_LITERAL:
t = mcc_consume_token(HEX_LITERAL);
left = ConstantExpression.CreateFromHex(t.image);
break;
case OCTAL_LITERAL:
t = mcc_consume_token(OCTAL_LITERAL);
left = ConstantExpression.CreateFromOctal(t.image);
break;
case FLOATING_POINT_LITERAL:
t = mcc_consume_token(FLOATING_POINT_LITERAL);
left = ConstantExpression.CreateFloat(t.image);
break;
case TRUE:
mcc_consume_token(TRUE);
left = ConstantExpression.TRUE;
break;
case FALSE:
mcc_consume_token(FALSE);
left = ConstantExpression.FALSE;
break;
case NULL:
mcc_consume_token(NULL);
left = ConstantExpression.NULL;
break;
default:
mcc_consume_token(-1);
throw new ParseException();
}
{return left;}
throw new Exception("Missing return statement in function");
}
public string GetStringLitteral() {
Token t;
StringBuilder rc = new StringBuilder();
t = mcc_consume_token(STRING_LITERAL);
// Decode the sting value.
String image = t.image;
for(int c = 1; c < image.Length - 1; c++)
{
char ch = image[c];
if(ch == '\'')
{
c++;
}
rc.Append(ch);
}
{return rc.ToString();}
throw new Exception("Missing return statement in function");
}
public PropertyExpression GetVariable() {
Token t;
PropertyExpression left = null;
t = mcc_consume_token(ID);
left = new PropertyExpression(t.image);
{return left;}
throw new Exception("Missing return statement in function");
}
private bool mcc_2_1(int xla) {
mcc_la = xla; mcc_lastpos = mcc_scanpos = token;
try { return !mcc_3_1(); }
catch(LookaheadSuccess) { return true; }
}
private bool mcc_2_2(int xla) {
mcc_la = xla; mcc_lastpos = mcc_scanpos = token;
try { return !mcc_3_2(); }
catch(LookaheadSuccess) { return true; }
}
private bool mcc_2_3(int xla) {
mcc_la = xla; mcc_lastpos = mcc_scanpos = token;
try { return !mcc_3_3(); }
catch(LookaheadSuccess) { return true; }
}
private bool mcc_2_4(int xla) {
mcc_la = xla; mcc_lastpos = mcc_scanpos = token;
try { return !mcc_3_4(); }
catch(LookaheadSuccess) { return true; }
}
private bool mcc_2_5(int xla) {
mcc_la = xla; mcc_lastpos = mcc_scanpos = token;
try { return !mcc_3_5(); }
catch(LookaheadSuccess) { return true; }
}
private bool mcc_2_6(int xla) {
mcc_la = xla; mcc_lastpos = mcc_scanpos = token;
try { return !mcc_3_6(); }
catch(LookaheadSuccess) { return true; }
}
private bool mcc_3R_57() {
if (mcc_scan_token(ESCAPE)) return true;
if (mcc_3R_36()) return true;
return false;
}
private bool mcc_3R_19() {
Token xsp;
xsp = mcc_scanpos;
if (mcc_3R_20()) {
mcc_scanpos = xsp;
if (mcc_3R_21()) {
mcc_scanpos = xsp;
if (mcc_3R_22()) return true;
}
}
return false;
}
private bool mcc_3R_39() {
if (mcc_3R_41()) return true;
Token xsp;
while (true) {
xsp = mcc_scanpos;
if (mcc_3R_42()) { mcc_scanpos = xsp; break; }
}
return false;
}
private bool mcc_3_4() {
if (mcc_scan_token(NOT)) return true;
if (mcc_scan_token(IN)) return true;
if (mcc_scan_token(34)) return true;
if (mcc_3R_36()) return true;
Token xsp;
while (true) {
xsp = mcc_scanpos;
if (mcc_3R_59()) { mcc_scanpos = xsp; break; }
}
if (mcc_scan_token(36)) return true;
return false;
}
private bool mcc_3_6() {
if (mcc_scan_token(37)) return true;
if (mcc_3R_10()) return true;
return false;
}
private bool mcc_3R_15() {
if (mcc_3R_19()) return true;
return false;
}
private bool mcc_3R_36() {
if (mcc_scan_token(STRING_LITERAL)) return true;
return false;
}
private bool mcc_3R_14() {
if (mcc_scan_token(NOT)) return true;
if (mcc_3R_10()) return true;
return false;
}
private bool mcc_3R_12() {
if (mcc_scan_token(37)) return true;
if (mcc_3R_10()) return true;
return false;
}
private bool mcc_3R_53() {
if (mcc_scan_token(IN)) return true;
if (mcc_scan_token(34)) return true;
if (mcc_3R_36()) return true;
Token xsp;
while (true) {
xsp = mcc_scanpos;
if (mcc_3R_58()) { mcc_scanpos = xsp; break; }
}
if (mcc_scan_token(36)) return true;
return false;
}
private bool mcc_3R_45() {
if (mcc_scan_token(IS)) return true;
if (mcc_scan_token(NOT)) return true;
if (mcc_scan_token(NULL)) return true;
return false;
}
private bool mcc_3R_13() {
if (mcc_scan_token(38)) return true;
if (mcc_3R_10()) return true;
return false;
}
private bool mcc_3R_33() {
if (mcc_scan_token(NULL)) return true;
return false;
}
private bool mcc_3_1() {
if (mcc_scan_token(IS)) return true;
if (mcc_scan_token(NULL)) return true;
return false;
}
private bool mcc_3R_10() {
Token xsp;
xsp = mcc_scanpos;
if (mcc_3R_12()) {
mcc_scanpos = xsp;
if (mcc_3R_13()) {
mcc_scanpos = xsp;
if (mcc_3R_14()) {
mcc_scanpos = xsp;
if (mcc_3R_15()) return true;
}
}
}
return false;
}
private bool mcc_3R_44() {
if (mcc_scan_token(29)) return true;
if (mcc_3R_39()) return true;
return false;
}
private bool mcc_3R_32() {
if (mcc_scan_token(FALSE)) return true;
return false;
}
private bool mcc_3_3() {
if (mcc_scan_token(NOT)) return true;
if (mcc_scan_token(BETWEEN)) return true;
if (mcc_3R_41()) return true;
if (mcc_scan_token(AND)) return true;
if (mcc_3R_41()) return true;
return false;
}
private bool mcc_3R_43() {
if (mcc_scan_token(28)) return true;
if (mcc_3R_39()) return true;
return false;
}
private bool mcc_3R_40() {
Token xsp;
xsp = mcc_scanpos;
if (mcc_3R_43()) {
mcc_scanpos = xsp;
if (mcc_3R_44()) {
mcc_scanpos = xsp;
if (mcc_3_1()) {
mcc_scanpos = xsp;
if (mcc_3R_45()) return true;
}
}
}
return false;
}
private bool mcc_3R_52() {
if (mcc_scan_token(BETWEEN)) return true;
if (mcc_3R_41()) return true;
if (mcc_scan_token(AND)) return true;
if (mcc_3R_41()) return true;
return false;
}
private bool mcc_3R_31() {
if (mcc_scan_token(TRUE)) return true;
return false;
}
private bool mcc_3R_56() {
if (mcc_scan_token(ESCAPE)) return true;
if (mcc_3R_36()) return true;
return false;
}
private bool mcc_3R_18() {
if (mcc_scan_token(41)) return true;
if (mcc_3R_10()) return true;
return false;
}
private bool mcc_3R_30() {
if (mcc_scan_token(FLOATING_POINT_LITERAL)) return true;
return false;
}
private bool mcc_3R_37() {
if (mcc_3R_39()) return true;
Token xsp;
while (true) {
xsp = mcc_scanpos;
if (mcc_3R_40()) { mcc_scanpos = xsp; break; }
}
return false;
}
private bool mcc_3_2() {
if (mcc_scan_token(NOT)) return true;
if (mcc_scan_token(LIKE)) return true;
if (mcc_3R_36()) return true;
Token xsp;
xsp = mcc_scanpos;
if (mcc_3R_57()) mcc_scanpos = xsp;
return false;
}
private bool mcc_3R_51() {
if (mcc_scan_token(LIKE)) return true;
if (mcc_3R_36()) return true;
Token xsp;
xsp = mcc_scanpos;
if (mcc_3R_56()) mcc_scanpos = xsp;
return false;
}
private bool mcc_3R_17() {
if (mcc_scan_token(40)) return true;
if (mcc_3R_10()) return true;
return false;
}
private bool mcc_3R_29() {
if (mcc_scan_token(OCTAL_LITERAL)) return true;
return false;
}
private bool mcc_3R_16() {
if (mcc_scan_token(39)) return true;
if (mcc_3R_10()) return true;
return false;
}
private bool mcc_3R_11() {
Token xsp;
xsp = mcc_scanpos;
if (mcc_3R_16()) {
mcc_scanpos = xsp;
if (mcc_3R_17()) {
mcc_scanpos = xsp;
if (mcc_3R_18()) return true;
}
}
return false;
}
private bool mcc_3R_38() {
if (mcc_scan_token(AND)) return true;
if (mcc_3R_37()) return true;
return false;
}
private bool mcc_3R_28() {
if (mcc_scan_token(HEX_LITERAL)) return true;
return false;
}
private bool mcc_3R_9() {
if (mcc_3R_10()) return true;
Token xsp;
while (true) {
xsp = mcc_scanpos;
if (mcc_3R_11()) { mcc_scanpos = xsp; break; }
}
return false;
}
private bool mcc_3R_27() {
if (mcc_scan_token(DECIMAL_LITERAL)) return true;
return false;
}
private bool mcc_3R_55() {
if (mcc_scan_token(38)) return true;
if (mcc_3R_9()) return true;
return false;
}
private bool mcc_3R_34() {
if (mcc_3R_37()) return true;
Token xsp;
while (true) {
xsp = mcc_scanpos;
if (mcc_3R_38()) { mcc_scanpos = xsp; break; }
}
return false;
}
private bool mcc_3_5() {
Token xsp;
xsp = mcc_scanpos;
if (mcc_scan_token(37)) {
mcc_scanpos = xsp;
if (mcc_scan_token(38)) return true;
}
if (mcc_3R_9()) return true;
return false;
}
private bool mcc_3R_50() {
if (mcc_scan_token(33)) return true;
if (mcc_3R_41()) return true;
return false;
}
private bool mcc_3R_54() {
if (mcc_scan_token(37)) return true;
if (mcc_3R_9()) return true;
return false;
}
private bool mcc_3R_26() {
if (mcc_3R_36()) return true;
return false;
}
private bool mcc_3R_49() {
if (mcc_scan_token(32)) return true;
if (mcc_3R_41()) return true;
return false;
}
private bool mcc_3R_59() {
if (mcc_scan_token(35)) return true;
if (mcc_3R_36()) return true;
return false;
}
private bool mcc_3R_46() {
Token xsp;
xsp = mcc_scanpos;
if (mcc_3R_54()) {
mcc_scanpos = xsp;
if (mcc_3R_55()) return true;
}
return false;
}
private bool mcc_3R_35() {
if (mcc_scan_token(OR)) return true;
if (mcc_3R_34()) return true;
return false;
}
private bool mcc_3R_23() {
Token xsp;
xsp = mcc_scanpos;
if (mcc_3R_26()) {
mcc_scanpos = xsp;
if (mcc_3R_27()) {
mcc_scanpos = xsp;
if (mcc_3R_28()) {
mcc_scanpos = xsp;
if (mcc_3R_29()) {
mcc_scanpos = xsp;
if (mcc_3R_30()) {
mcc_scanpos = xsp;
if (mcc_3R_31()) {
mcc_scanpos = xsp;
if (mcc_3R_32()) {
mcc_scanpos = xsp;
if (mcc_3R_33()) return true;
}
}
}
}
}
}
}
return false;
}
private bool mcc_3R_48() {
if (mcc_scan_token(31)) return true;
if (mcc_3R_41()) return true;
return false;
}
private bool mcc_3R_24() {
if (mcc_scan_token(ID)) return true;
return false;
}
private bool mcc_3R_47() {
if (mcc_scan_token(30)) return true;
if (mcc_3R_41()) return true;
return false;
}
private bool mcc_3R_42() {
Token xsp;
xsp = mcc_scanpos;
if (mcc_3R_47()) {
mcc_scanpos = xsp;
if (mcc_3R_48()) {
mcc_scanpos = xsp;
if (mcc_3R_49()) {
mcc_scanpos = xsp;
if (mcc_3R_50()) {
mcc_scanpos = xsp;
if (mcc_3R_51()) {
mcc_scanpos = xsp;
if (mcc_3_2()) {
mcc_scanpos = xsp;
if (mcc_3R_52()) {
mcc_scanpos = xsp;
if (mcc_3_3()) {
mcc_scanpos = xsp;
if (mcc_3R_53()) {
mcc_scanpos = xsp;
if (mcc_3_4()) return true;
}
}
}
}
}
}
}
}
}
return false;
}
private bool mcc_3R_41() {
if (mcc_3R_9()) return true;
Token xsp;
while (true) {
xsp = mcc_scanpos;
if (mcc_3R_46()) { mcc_scanpos = xsp; break; }
}
return false;
}
private bool mcc_3R_25() {
if (mcc_3R_34()) return true;
Token xsp;
while (true) {
xsp = mcc_scanpos;
if (mcc_3R_35()) { mcc_scanpos = xsp; break; }
}
return false;
}
private bool mcc_3R_22() {
if (mcc_scan_token(34)) return true;
if (mcc_3R_25()) return true;
if (mcc_scan_token(36)) return true;
return false;
}
private bool mcc_3R_21() {
if (mcc_3R_24()) return true;
return false;
}
private bool mcc_3R_20() {
if (mcc_3R_23()) return true;
return false;
}
private bool mcc_3R_58() {
if (mcc_scan_token(35)) return true;
if (mcc_3R_36()) return true;
return false;
}
public SelectorParserTokenManager token_source;
SimpleCharStream mcc_input_stream;
public Token token, mcc_nt;
private int mcc_ntk;
private Token mcc_scanpos, mcc_lastpos;
private int mcc_la;
public bool lookingAhead = false;
//private bool mcc_semLA;
public SelectorParser(System.IO.Stream stream) {
mcc_input_stream = new SimpleCharStream(stream, 1, 1);
token_source = new SelectorParserTokenManager(mcc_input_stream);
token = new Token();
mcc_ntk = -1;
}
public void ReInit(System.IO.Stream stream) {
mcc_input_stream.ReInit(stream, 1, 1);
token_source.ReInit(mcc_input_stream);
token = new Token();
mcc_ntk = -1;
}
public SelectorParser(System.IO.TextReader stream) {
mcc_input_stream = new SimpleCharStream(stream, 1, 1);
token_source = new SelectorParserTokenManager(mcc_input_stream);
token = new Token();
mcc_ntk = -1;
}
public void ReInit(System.IO.TextReader stream) {
mcc_input_stream.ReInit(stream, 1, 1);
token_source.ReInit(mcc_input_stream);
token = new Token();
mcc_ntk = -1;
}
public SelectorParser(SelectorParserTokenManager tm) {
token_source = tm;
token = new Token();
mcc_ntk = -1;
}
public void ReInit(SelectorParserTokenManager tm) {
token_source = tm;
token = new Token();
mcc_ntk = -1;
}
private Token mcc_consume_token(int kind) {
Token oldToken = null;
if ((oldToken = token).next != null) token = token.next;
else token = token.next = token_source.GetNextToken();
mcc_ntk = -1;
if (token.kind == kind) {
return token;
}
token = oldToken;
throw GenerateParseException();
}
private class LookaheadSuccess : System.Exception { }
private LookaheadSuccess mcc_ls = new LookaheadSuccess();
private bool mcc_scan_token(int kind) {
if (mcc_scanpos == mcc_lastpos) {
mcc_la--;
if (mcc_scanpos.next == null) {
mcc_lastpos = mcc_scanpos = mcc_scanpos.next = token_source.GetNextToken();
} else {
mcc_lastpos = mcc_scanpos = mcc_scanpos.next;
}
} else {
mcc_scanpos = mcc_scanpos.next;
}
if (mcc_scanpos.kind != kind) return true;
if (mcc_la == 0 && mcc_scanpos == mcc_lastpos) throw mcc_ls;
return false;
}
public Token GetNextToken() {
if (token.next != null) token = token.next;
else token = token.next = token_source.GetNextToken();
mcc_ntk = -1;
return token;
}
public Token GetToken(int index) {
Token t = lookingAhead ? mcc_scanpos : token;
for (int i = 0; i < index; i++) {
if (t.next != null) t = t.next;
else t = t.next = token_source.GetNextToken();
}
return t;
}
private int mcc_mntk() {
if ((mcc_nt=token.next) == null)
return (mcc_ntk = (token.next=token_source.GetNextToken()).kind);
else
return (mcc_ntk = mcc_nt.kind);
}
public ParseException GenerateParseException() {
Token errortok = token.next;
int line = errortok.beginLine, column = errortok.beginColumn;
string mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;
return new ParseException("Parse error at line " + line + ", column " + column + ". Encountered: " + mess);
}
public void enable_tracing() {
}
public void disable_tracing() {
}
}
}