aboutsummaryrefslogtreecommitdiff
path: root/module/c/old/operators.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/c/old/operators.scm')
-rw-r--r--module/c/old/operators.scm24
1 files changed, 24 insertions, 0 deletions
diff --git a/module/c/old/operators.scm b/module/c/old/operators.scm
new file mode 100644
index 00000000..0b253ada
--- /dev/null
+++ b/module/c/old/operators.scm
@@ -0,0 +1,24 @@
+(define-module (c old operators)
+ :export (wordy-binary-operators
+ symbol-binary-operators
+ binary-operators))
+
+
+;;; Simple operators are those which can be combined with '='
+(define simple-operators
+ `(+ - * / & ,(symbol #\|) ^ << >> % < > =))
+
+;; apparently part of C
+;; https://en.cppreference.com/w/cpp/language/operator_alternative
+(define wordy-binary-operators
+ '(bitand and_eq and bitor or_eq or xor_eq xor not_eq))
+
+(define symbol-binary-operators
+ (append (map (lambda (x) (symbol-append x '=)) simple-operators)
+ `(&& ,(symbol #\| #\|) != ,(symbol #\,)
+ -> ,(symbol #\.))
+ simple-operators))
+
+(define binary-operators
+ (append symbol-binary-operators
+ wordy-binary-operators))