protected Expression typeof_with_expression()
{
Expression expression = null;
IToken token = null;
try
{
Expression expression2;
token = this.LT(1);
this.match(0x2c);
if ((this.LA(1) == 0x3f) && tokenSet_16_.member(this.LA(2)))
{
this.match(0x3f);
expression2 = this.expression();
this.match(0x40);
}
else
{
if (!tokenSet_16_.member(this.LA(1)) || !tokenSet_20_.member(this.LA(2)))
{
throw new NoViableAltException(this.LT(1), this.getFilename());
}
expression2 = this.expression();
}
if (base.inputState.guessing == 0)
{
ReferenceExpression expression4;
MethodInvocationExpression expression3 = new MethodInvocationExpression(ToLexicalInfo(token));
ReferenceExpression expression1 = expression4 = new ReferenceExpression(ToLexicalInfo(token));
expression4.set_Name(token.getText());
expression3.set_Target(expression4);
expression3.get_Arguments().Add(expression2);
expression = expression3;
}
}
catch (RecognitionException exception)
{
if (base.inputState.guessing != 0)
{
throw;
}
this.reportError(exception);
this.recover(exception, tokenSet_20_);
return expression;
}
return expression;
}