Closed rizo closed 9 years ago
Currently the parser stops by checking if the current token is the end token. Using end
token handler may be a better solution but with current handler typing its unnecessarily complicated.
Fixed in 3996866.
The solution adds explicit Start
and End
token handlers and includes them in the final AST by defining the root expression.
-> x = -a + b * c + d
= (root (= (var x) (+ (+ (- (var a)) (* (var b) (var c))) (var d))))
The default action of End
as an infix handler is to return the expression (note: It will be further abstracted as a postfix handler). On the other hand, if interpreted as an atomic handler it denotes an empty expressions which, in case of an empty input, is perfectly fine, but in other cases it means that the expression is incomplete. This is shown in the following example:
-> 2 +
= (root (+ 2 (end)))
The consequences of this interpretation is that the consistency validation must be performed as a separate step.
Decide how the parsing ends.