public override Expression VisitEquality_expression(Equality_expressionContext context)
        {
            var expression = Visit(context.children[0]);

            for (int i = 1; i < context.children.Count - 1; i += 2)
            {
                var current = Visit(context.children[i + 1]);
                var op      = context.children[i].GetText();
                if (op == "==")
                {
                    expression = Expression.Equal(expression, current);
                }
                else if (op == "!=")
                {
                    expression = Expression.NotEqual(expression, current);
                }
                else
                {
                    throw new CompilationException($"Unsupported operation. Operation={op}", context);
                }
            }
            return(expression);
        }
Esempio n. 2
0
	public Equality_expressionContext equality_expression() {
		Equality_expressionContext _localctx = new Equality_expressionContext(_ctx, State);
		EnterRule(_localctx, 224, RULE_equality_expression);
		int _la;
		try {
			EnterOuterAlt(_localctx, 1);
			{
			State = 1235; relational_expression();
			State = 1240;
			_errHandler.Sync(this);
			_la = _input.La(1);
			while (_la==EQUAL || _la==NOTEQUAL) {
				{
				{
				State = 1236;
				_la = _input.La(1);
				if ( !(_la==EQUAL || _la==NOTEQUAL) ) {
				_errHandler.RecoverInline(this);
				}
				Consume();
				State = 1237; relational_expression();
				}
				}
				State = 1242;
				_errHandler.Sync(this);
				_la = _input.La(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.ReportError(this, re);
			_errHandler.Recover(this, re);
		}
		finally {
			ExitRule();
		}
		return _localctx;
	}