feat: add unary operators and variable assignment with precedence handling

Implement unary negation for numbers and logical not for booleans, introduce PREC_ASSIGNMENT and PREC_UNARY precedence levels, refactor parse functions to accept allowAssignment parameter, add assignment tests for global/local/chained/error cases, and update if-syntax to support statement branches and assignment in conditions.
This commit is contained in:
Bob Nystrom
2013-11-13 15:10:52 +00:00
parent 944591339f
commit 7eabd40181
15 changed files with 281 additions and 115 deletions
+5
View File
@@ -1,5 +1,10 @@
// Infix.
io.write(5 - 3) // expect: 2
io.write(3.1 - 0.24) // expect: 2.86
io.write(3 - 2 - 1) // expect: 0
// Unary negation.
var a = 3
io.write(-a) // expect: -3
// TODO(bob): Unsupported RHS types.