diff options
| author | Shagun Agrawal <agrawalshagun07@gmail.com> | 2024-08-30 18:49:17 +0530 |
|---|---|---|
| committer | Shagun Agrawal <agrawalshagun07@gmail.com> | 2024-08-30 18:49:17 +0530 |
| commit | 276b0c200e5159b1d099ff85aab544480c2ac757 (patch) | |
| tree | 8cb86289809936901b2a49344818528799fa81da /src/cljcc/token.clj | |
| parent | 7a3e7151ea7e05952ec58648d71d9ed33168109d (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.clj | 48 |
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 |
