aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-05-05 16:30:53 +0900
committernsfisis <nsfisis@gmail.com>2025-05-05 16:30:53 +0900
commitc7d0deda9effcc38294caba28640b86c835c8976 (patch)
treeef1599193900f22f80eb1e476c9ef6b5ef07b8b4
parent0cd91dec317281f8eb299fff7fed725e59f78d42 (diff)
downloadP4Dcc-c7d0deda9effcc38294caba28640b86c835c8976.tar.gz
P4Dcc-c7d0deda9effcc38294caba28640b86c835c8976.tar.zst
P4Dcc-c7d0deda9effcc38294caba28640b86c835c8976.zip
support identifiers that start with underscore
-rw-r--r--main.c2
-rw-r--r--tests/043.sh17
2 files changed, 18 insertions, 1 deletions
diff --git a/main.c b/main.c
index bb91a3b..8db2f31 100644
--- a/main.c
+++ b/main.c
@@ -214,7 +214,7 @@ struct Token* tokenize(char* src) {
tok->kind = TK_L_INT;
tok->value = calloc(pos - start + 1, sizeof(char));
memcpy(tok->value, src + start, pos - start);
- } else if (isalpha(c)) {
+ } else if (isalpha(c) || c == '_') {
pos -= 1;
start = pos;
while (isalnum(src[pos]) || src[pos] == '_') {
diff --git a/tests/043.sh b/tests/043.sh
new file mode 100644
index 0000000..a343918
--- /dev/null
+++ b/tests/043.sh
@@ -0,0 +1,17 @@
+set -e
+
+cat <<'EOF' > expected
+42,123
+EOF
+bash ../../test_diff.sh <<'EOF'
+int printf();
+
+int main() {
+ int _a = 42;
+ int _b = 123;
+
+ printf("%d,%d\n", _a, _b);
+
+ return 0;
+}
+EOF