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; }
public Expression new_expression() { Expression expression = null; try { ExpressionCollection expressions; bool flag = false; if ((this.LA(1) == 0x1b) && (this.LA(2) == 0x3b)) { int num = this.mark(); flag = true; base.inputState.guessing++; try { this.new_array_expression(); } catch (RecognitionException) { flag = false; } this.rewind(num); base.inputState.guessing--; } if (flag) { return this.new_array_expression(); } if ((this.LA(1) != 0x1b) || ((this.LA(2) != 12) && (this.LA(2) != 0x3b))) { throw new NoViableAltException(this.LT(1), this.getFilename()); } this.match(0x1b); Expression expression2 = this.reference_expression(); if (base.inputState.guessing == 0) { MethodInvocationExpression expression3; MethodInvocationExpression expression4; MethodInvocationExpression expression1 = expression3 = new MethodInvocationExpression(expression2.get_LexicalInfo()); expression3.set_Target(expression2); expression = expression4 = expression3; expressions = expression4.get_Arguments(); } this.match(0x3f); this.expression_list(expressions); this.match(0x40); return expression; } catch (RecognitionException exception2) { if (base.inputState.guessing != 0) { throw; } this.reportError(exception2); this.recover(exception2, tokenSet_20_); return expression; } return expression; }
public Expression slicing_expression() { Expression target = null; IToken token = null; IToken token2 = null; SlicingExpression se = null; MethodInvocationExpression expression3 = null; ExpressionCollection ec = null; try { target = this.atom(); while (true) { while ((this.LA(1) == 0x44) && tokenSet_54_.member(this.LA(2))) { token = this.LT(1); this.match(0x44); if (base.inputState.guessing == 0) { se = new SlicingExpression(ToLexicalInfo(token)); se.set_Target(target); target = se; } this.slice(se); while (this.LA(1) == 0x43) { this.match(0x43); this.slice(se); } this.match(0x45); } if ((this.LA(1) == 0x41) && tokenSet_55_.member(this.LA(2))) { this.match(0x41); target = this.member_reference_expression(target); } else { if ((this.LA(1) != 0x3f) || !tokenSet_22_.member(this.LA(2))) { return target; } token2 = this.LT(1); this.match(0x3f); if (base.inputState.guessing == 0) { expression3 = new MethodInvocationExpression(ToLexicalInfo(token2)); expression3.set_Target(target); target = expression3; ec = expression3.get_Arguments(); } this.expression_list(ec); this.match(0x40); } } } catch (RecognitionException exception) { if (base.inputState.guessing != 0) { throw; } this.reportError(exception); this.recover(exception, tokenSet_20_); return target; } return target; }
private void ProcessTypeofBuiltin(MethodInvocationExpression node) { if (node.get_Arguments().get_Count() != 1) { this.Error(node, new CompilerError("UCE0001", node.get_Target().get_LexicalInfo(), "'typeof' takes a single argument.", null)); } else { IType type = node.get_Arguments().get_Item(0).get_Entity() as IType; if (type != null) { node.get_ParentNode().Replace(node, this.get_CodeBuilder().CreateTypeofExpression(type)); } else { node.set_Target(this.get_CodeBuilder().CreateReference(this._UnityRuntimeServices_GetTypeOf)); this.BindExpressionType(node, this.get_TypeSystemServices().TypeType); } } }