summaryrefslogtreecommitdiff
path: root/tnslc/parse
diff options
context:
space:
mode:
Diffstat (limited to 'tnslc/parse')
-rw-r--r--tnslc/parse/ast.tnsl16
1 files changed, 16 insertions, 0 deletions
diff --git a/tnslc/parse/ast.tnsl b/tnslc/parse/ast.tnsl
index f9ad1f9..24773f2 100644
--- a/tnslc/parse/ast.tnsl
+++ b/tnslc/parse/ast.tnsl
@@ -204,6 +204,20 @@ int errors_shown = 0
return true
;/
+# Canonical operation order from strongest (lowest number prec) to weakest (highest number prec)
+# Parenthesis or function call done before any of these
+# 0: deref - (`)
+# 1: member - (.)
+# 2: refer - (~)
+# 3: inc/dec - (++ --)
+# 4: bit shift - (<< >>)
+# 5: len prefix op - (len)
+# 6: mul/div - (* / %)
+# 7: add/sub - (+ -)
+# 8: bitwise ops - (! & | ^ !& !| !^)
+# 9: comparison - (== < > <== >== !== !< !>)
+# 10: boolean - (&& || ^^ !&& !|| !^^)
+# 11: assignment - variants of =
/; _op_order(~uint8 op) [int]
int l = utils.strlen(op)
@@ -255,6 +269,8 @@ int errors_shown = 0
return 5
;; else if (op{1} == '=')
return 9
+ ;; else if (op{2} == '=')
+ return 11
;/
return 10
;/