Pytocs.Syntax.Parser.comparison C# (CSharp) Method

comparison() public method

public comparison ( ) : Exp
return Exp
        public Exp comparison()
        {
            var e = expr();
            if (e == null)
                return e;
            int posStart = e.Start;
            Exp inner;
            for (; ; )
            {
                Op op;
                //'<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
                switch (lexer.Peek().Type)
                {
                case TokenType.OP_LT: op = Op.Lt; break;
                case TokenType.OP_LE: op = Op.Le; break;
                case TokenType.OP_GE: op = Op.Ge; break;
                case TokenType.OP_GT: op = Op.Gt; break;
                case TokenType.OP_EQ: op = Op.Eq; break;
                case TokenType.OP_NE: op = Op.Ne; break;
                case TokenType.In: op = Op.In; break;
                case TokenType.Not:
                    Expect(TokenType.Not);
                    Expect(TokenType.In);
                    inner = expr();
                    e = new BinExp(Op.NotIn, e, inner, filename, posStart, inner.End);
                    continue;
                case TokenType.Is:
                    Expect(TokenType.Is);
                    op = PeekAndDiscard(TokenType.Not) ? Op.IsNot : Op.Is;
                    inner = expr();
                    e = new BinExp(op, e, inner, filename, posStart, inner.End);
                    continue;

                default: return e;
                }
                lexer.Get();
                inner = expr();
                e = new BinExp(op, e, inner, filename, posStart, inner.End);
            }
        }