aboutsummaryrefslogtreecommitdiff
path: root/src/cljcc/token.clj
diff options
context:
space:
mode:
authorShagun Agrawal <agrawalshagun07@gmail.com>2024-08-30 18:49:17 +0530
committerShagun Agrawal <agrawalshagun07@gmail.com>2024-08-30 18:49:17 +0530
commit276b0c200e5159b1d099ff85aab544480c2ac757 (patch)
tree8cb86289809936901b2a49344818528799fa81da /src/cljcc/token.clj
parent7a3e7151ea7e05952ec58648d71d9ed33168109d (diff)
Add compound assignment operators
Added compound assignment operators ( >>==, += etc ) Pass chapter 5 extra credit tests
Diffstat (limited to 'src/cljcc/token.clj')
-rw-r--r--src/cljcc/token.clj48
1 files changed, 47 insertions, 1 deletions
diff --git a/src/cljcc/token.clj b/src/cljcc/token.clj
index dc1d125..883dda8 100644
--- a/src/cljcc/token.clj
+++ b/src/cljcc/token.clj
@@ -32,6 +32,16 @@
:bitwise-or
:negate
:assignemnt
+ :assignment-plus
+ :assignment-multiply
+ :assignment-minus
+ :assignment-divide
+ :assignment-mod
+ :assignment-bitwise-and
+ :assignment-bitwise-or
+ :assignment-bitwise-xor
+ :assignment-bitwise-left-shift
+ :assignment-bitwise-right-shift
:increment
:decrement
@@ -48,6 +58,22 @@
:complement
:hyphen})
+(def assignment-ops
+ #{:assignment
+ :assignment-plus
+ :assignment-multiply
+ :assignment-minus
+ :assignment-divide
+ :assignment-mod
+ :assignment-bitwise-and
+ :assignment-bitwise-or
+ :assignment-bitwise-xor
+ :assignment-bitwise-left-shift
+ :assignment-bitwise-right-shift})
+
+(defn assignment-op? [op]
+ (contains? assignment-ops op))
+
(defn unary-op? [op]
(contains? unary-ops op))
@@ -81,7 +107,17 @@
:logical-or 10
- :assignment 1})
+ :assignment 1
+ :assignment-plus 1
+ :assignment-multiply 1
+ :assignment-minus 1
+ :assignment-divide 1
+ :assignment-mod 1
+ :assignment-bitwise-and 1
+ :assignment-bitwise-or 1
+ :assignment-bitwise-xor 1
+ :assignment-bitwise-left-shift 1
+ :assignment-bitwise-right-shift 1})
(defn binary-op? [op]
(contains? bin-ops op))
@@ -108,6 +144,16 @@
\> :greater-than
"<=" :less-than-equal-to
">=" :greater-than-equal-to
+ "+=" :assignment-plus
+ "*=" :assignment-multiply
+ "-=" :assignment-minus
+ "/=" :assignment-divide
+ "%=" :assignment-mod
+ "&=" :assignment-bitwise-and
+ "|=" :assignment-bitwise-or
+ "^=" :assignment-bitwise-xor
+ "<<=" :assignment-bitwise-left-shift
+ ">>=" :assignment-bitwise-right-shift
\^ :bitwise-xor
\| :bitwise-or
\& :ampersand