aboutsummaryrefslogtreecommitdiffhomepage
path: root/preprocess.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-07-29 08:51:00 +0900
committernsfisis <nsfisis@gmail.com>2025-08-15 10:04:36 +0900
commitf30a6e048ccadd33c889caaa8012cfabfd5c2da9 (patch)
treed64763931b2013024feb8505785840d47c51a03f /preprocess.c
parentbfd0e04870c7cc55e8c2a9ee5e7b3e39fc9286c2 (diff)
downloadducc-f30a6e048ccadd33c889caaa8012cfabfd5c2da9.tar.gz
ducc-f30a6e048ccadd33c889caaa8012cfabfd5c2da9.tar.zst
ducc-f30a6e048ccadd33c889caaa8012cfabfd5c2da9.zip
feat: implement bitwise or
Diffstat (limited to 'preprocess.c')
-rw-r--r--preprocess.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/preprocess.c b/preprocess.c
index 4ffe12e..7fa98f3 100644
--- a/preprocess.c
+++ b/preprocess.c
@@ -146,10 +146,16 @@ void pp_tokenize_all(Preprocessor* pp) {
tok->raw.data = pp->src + pp->pos - tok->raw.len;
}
} else if (c == '|') {
- ++pp->pos;
- tok->kind = PpTokenKind_punctuator;
- tok->raw.len = 2;
- tok->raw.data = pp->src + pp->pos - tok->raw.len;
+ if (pp->src[pp->pos] == '|') {
+ ++pp->pos;
+ tok->kind = PpTokenKind_punctuator;
+ tok->raw.len = 2;
+ tok->raw.data = pp->src + pp->pos - tok->raw.len;
+ } else {
+ tok->kind = PpTokenKind_punctuator;
+ tok->raw.len = 1;
+ tok->raw.data = pp->src + pp->pos - tok->raw.len;
+ }
} else if (c == '&') {
if (pp->src[pp->pos] == '&') {
++pp->pos;