diff options
| author | Mistivia <i@mistivia.com> | 2025-06-21 00:35:00 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-06-21 00:35:00 +0800 |
| commit | 0afe446fa6e893448da949b1b6882c87b3b2701c (patch) | |
| tree | d1c73fb9d7e086112d181ab63908ec88146365ed /src/parser.c | |
| parent | bf0eb7e84c1f10e30fe82ec5f9d4c544a5b82fd2 (diff) | |
length macro; utf-8 symbol
Diffstat (limited to 'src/parser.c')
| -rw-r--r-- | src/parser.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/parser.c b/src/parser.c index cc41d76..c692794 100644 --- a/src/parser.c +++ b/src/parser.c @@ -231,8 +231,8 @@ ParseResult parse_list(Parser *parser) { ret = parse_sexp(parser); if (ParseResult_is_err(ret)) goto end; SExpRefVector_push_back(&elems, ret.val); - ret = expect_space_or_end(parser); - if (ParseResult_is_err(ret)) goto end; + // ret = expect_space_or_end(parser); + // if (ParseResult_is_err(ret)) goto end; skip_spaces(parser); } // dot @@ -256,6 +256,9 @@ static char *read_token(Parser *parser) { while (!isspace(Parser_peek(parser)) && Parser_peek(parser) != EOF && Parser_peek(parser) != ')' + && Parser_peek(parser) != '(' + && Parser_peek(parser) != '"' + && (i == 0 || Parser_peek(parser) != '#') && i < BUFSIZE - 1) { parser->token_buf[i] = Parser_getchar(parser); i++; @@ -281,6 +284,7 @@ static bool is_symbol_init(char c) { if (c == '^') return true; if (c == '_') return true; if (c == '~') return true; + if (c < 0) return true; return false; } |
