Exercise 11:

Parenthesized expressions over binary +, -, *, /, and ^
The set of tokens of the language is {+,-,*,/,^,NUMBER,(,)}. The token NUMBER represents unsigned integers, i.e., non-empty sequences of digits. Examples of correct expressions are “1”, “2+3^4/5”, “1^(0+3)/4-5”, “1/2^3”, whereas “1+”, “/2”, “1 2”, “^6”, “7/8*9+” are not. The generated AST must correspond to an interpretation of all operators as left-associative, except exponentiation, which is right-associative. The usual precedence of exponentiation over products and divisions and these over sums and subtractions applies. As an example, for input
1+2*3^4/5-6
the resulting AST must be
-(+(1,/(*(2,^(3,4)),5)),6)
i.e., as if the implicit parenthesization was
(1+((2*(3^4)/5))-6
Authors: Pau Fernández / Documentation:
To be able to submit you need to either log in, register, or become a guest.