diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-08-02 00:34:45 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:06:21 +0900 |
| commit | 0b55f60c77e181e61dd84bf6da3416bb88488116 (patch) | |
| tree | 4885ce30706f3a16b5f2b91dc58426772eea8285 | |
| parent | adf26a24a7e63a6c1061c107ce60a384eb6500c7 (diff) | |
| download | ducc-0b55f60c77e181e61dd84bf6da3416bb88488116.tar.gz ducc-0b55f60c77e181e61dd84bf6da3416bb88488116.tar.zst ducc-0b55f60c77e181e61dd84bf6da3416bb88488116.zip | |
feat: implement multi-line comment
| -rw-r--r-- | preprocess.c | 13 | ||||
| -rw-r--r-- | tests/075.sh | 16 |
2 files changed, 28 insertions, 1 deletions
diff --git a/preprocess.c b/preprocess.c index b43732b..36885ab 100644 --- a/preprocess.c +++ b/preprocess.c @@ -320,7 +320,18 @@ void pp_tokenize_all(Preprocessor* pp) { tok->raw.len = pp->pos - start; tok->raw.data = pp->src + pp->pos - tok->raw.len; } else if (pp->src[pp->pos] == '*') { - unimplemented(); + start = pp->pos - 1; + ++pp->pos; + while (pp->src[pp->pos]) { + if (pp->src[pp->pos] == '*' && pp->src[pp->pos + 1] == '/') { + pp->pos += 2; + break; + } + ++pp->pos; + } + tok->kind = PpTokenKind_whitespace; + tok->raw.len = pp->pos - start; + tok->raw.data = pp->src + pp->pos - tok->raw.len; } else { tok->kind = PpTokenKind_punctuator; tok->raw.len = 1; diff --git a/tests/075.sh b/tests/075.sh new file mode 100644 index 0000000..12cf004 --- /dev/null +++ b/tests/075.sh @@ -0,0 +1,16 @@ +set -e + +cat <<'EOF' > expected +EOF + +bash ../../test_diff.sh <<'EOF' +/* lorem ipsum */ +/* +lorem ipsum +*/ +// /* +/* /* + */ +int/**/main() { +} +EOF |
