protected Expression assignment_expression()
{
Expression e;
IToken op = null;
IToken ipbo = null;
IToken ipxo = null;
IToken ipba = null;
IToken ipsl = null;
IToken ipsr = null;
e = null;
Expression r=null;
IToken token = null;
BinaryOperatorType binaryOperator = BinaryOperatorType.None;
try { // for error handling
e=conditional_expression();
{
switch ( LA(1) )
{
case ASSIGN:
case INPLACE_BITWISE_OR:
case INPLACE_EXCLUSIVE_OR:
case INPLACE_BITWISE_AND:
case INPLACE_SHIFT_LEFT:
case INPLACE_SHIFT_RIGHT:
{
{
switch ( LA(1) )
{
case ASSIGN:
{
{
op = LT(1);
match(ASSIGN);
if (0==inputState.guessing)
{
token = op;
binaryOperator = OperatorParser.ParseAssignment(op.getText());
}
}
break;
}
case INPLACE_BITWISE_OR:
{
{
ipbo = LT(1);
match(INPLACE_BITWISE_OR);
if (0==inputState.guessing)
{
token = ipbo;
binaryOperator = BinaryOperatorType.InPlaceBitwiseOr;
}
}
break;
}
case INPLACE_EXCLUSIVE_OR:
{
{
ipxo = LT(1);
match(INPLACE_EXCLUSIVE_OR);
if (0==inputState.guessing)
{
token = ipxo;
binaryOperator = BinaryOperatorType.InPlaceExclusiveOr;
}
}
break;
}
case INPLACE_BITWISE_AND:
{
{
ipba = LT(1);
match(INPLACE_BITWISE_AND);
if (0==inputState.guessing)
{
token = ipba;
binaryOperator = BinaryOperatorType.InPlaceBitwiseAnd;
}
}
break;
}
case INPLACE_SHIFT_LEFT:
{
{
ipsl = LT(1);
match(INPLACE_SHIFT_LEFT);
if (0==inputState.guessing)
{
token = ipsl;
binaryOperator = BinaryOperatorType.InPlaceShiftLeft;
}
}
break;
}
case INPLACE_SHIFT_RIGHT:
{
{
ipsr = LT(1);
match(INPLACE_SHIFT_RIGHT);
if (0==inputState.guessing)
{
token = ipsr;
binaryOperator = BinaryOperatorType.InPlaceShiftRight;
}
}
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
r=assignment_expression();
if (0==inputState.guessing)
{
BinaryExpression be = new BinaryExpression(ToLexicalInfo(token));
be.Operator = binaryOperator;
be.Left = e;
be.Right = r;
e = be;
}
break;
}
case EOF:
case DEDENT:
case ESEPARATOR:
case EOL:
case ASSEMBLY_ATTRIBUTE_BEGIN:
case MODULE_ATTRIBUTE_BEGIN:
case ABSTRACT:
case AND:
case BREAK:
case CONTINUE:
case CALLABLE:
case CAST:
case CHAR:
case CLASS:
case DEF:
case DO:
case ELSE:
case ENUM:
case EVENT:
case FINAL:
case FOR:
case FALSE:
case GOTO:
case INTERFACE:
case INTERNAL:
case IF:
case NEW:
case NULL:
case OR:
case OVERRIDE:
case PARTIAL:
case PUBLIC:
case PROTECTED:
case PRIVATE:
case RAISE:
case RETURN:
case SELF:
case SUPER:
case STATIC:
case STRUCT:
case THEN:
case TRY:
case TRANSIENT:
case TRUE:
case TYPEOF:
case UNLESS:
case VIRTUAL:
case WHILE:
case YIELD:
case TRIPLE_QUOTED_STRING:
case EOS:
case LPAREN:
case RPAREN:
case DOUBLE_QUOTED_STRING:
case SINGLE_QUOTED_STRING:
case ID:
case MULTIPLY:
case LBRACK:
case RBRACK:
case COMMA:
case SPLICE_BEGIN:
case DOT:
case COLON:
case LBRACE:
case RBRACE:
case QQ_BEGIN:
case QQ_END:
case SUBTRACT:
case LONG:
case INCREMENT:
case DECREMENT:
case ONES_COMPLEMENT:
case INT:
case BACKTICK_QUOTED_STRING:
case RE_LITERAL:
case DOUBLE:
case FLOAT:
case TIMESPAN:
{
break;
}
default:
{
throw new NoViableAltException(LT(1), getFilename());
}
}
}
}
catch (RecognitionException ex)
{
if (0 == inputState.guessing)
{
reportError(ex, "assignment_expression");
recover(ex,tokenSet_105_);
}
else
{
throw ex;
}
}
return e;
}