Esempio n. 1
0
        public override Value VisitAssignmentExpression([NotNull] AssignmentExpressionContext context)
        {
            var rhs = context.Value.Accept(this);

            if (rhs == null)
            {
                return(null);
            }

            if (!NamedValues.TryGetValue(context.VariableName, out Alloca varSlot))
            {
                throw new ArgumentException("Unknown variable name");
            }

            InstructionBuilder.Store(rhs, varSlot);
            return(rhs);
        }
Esempio n. 2
0
	public AssignmentExpressionContext assignmentExpression() {
		AssignmentExpressionContext _localctx = new AssignmentExpressionContext(Context, State);
		EnterRule(_localctx, 46, RULE_assignmentExpression);
		try {
			State = 320;
			switch ( Interpreter.AdaptivePredict(TokenStream,30,Context) ) {
			case 1:
				EnterOuterAlt(_localctx, 1);
				{
				State = 315; conditionalExpression();
				}
				break;
			case 2:
				EnterOuterAlt(_localctx, 2);
				{
				State = 316; unaryExpression();
				State = 317; assignmentOperator();
				State = 318; assignmentExpression();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			ErrorHandler.ReportError(this, re);
			ErrorHandler.Recover(this, re);
		}
		finally {
			ExitRule();
		}
		return _localctx;
	}