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
+3
View File
@@ -23,6 +23,9 @@ io.write(false == 2 <= 1) // expect: true
// >= has higher precedence than ==.
io.write(false == 1 >= 2) // expect: true
// Unary - has lower precedence than ..
io.write(-"abc".count) // expect: -3
// TODO(bob): %, associativity.
// Using () for grouping.