Пример #1
0
    IExpression Addition(ImmutableList <string> symbols)
    {
        var left = Multiplication(symbols);

        while (Match(TokenTag.Add, TokenTag.Subtract) is Token token)
        {
            var op    = tokenOp[token.Tag];
            var right = Multiplication(symbols);
            left = new OperatorBinary(token.Position, op, left, right);
        }
        return(left);
    }
Пример #2
0
    IExpression Multiplication(ImmutableList <string> symbols)
    {
        var left = Unary(symbols);

        while (Match(TokenTag.Multiply, TokenTag.Divide, TokenTag.Mod) is Token token)
        {
            var op    = tokenOp[token.Tag];
            var right = Unary(symbols);
            left = new OperatorBinary(token.Position, op, left, right);
        }
        return(left);
    }
Пример #3
0
    IExpression Relation(ImmutableList <string> symbols)
    {
        var left = Addition(symbols);

        while (Match(TokenTag.GreaterThan, TokenTag.GreaterThanOrEqualTo, TokenTag.LessThan, TokenTag.LessThanOrEqualTo) is Token token)
        {
            var op    = tokenOp[token.Tag];
            var right = Addition(symbols);
            left = new OperatorBinary(token.Position, op, left, right);
        }
        return(left);
    }