From 88d01cd637ae2b7d6c7c2e721eb98a72160c44e2 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 13 Jul 2025 20:07:10 +0900 Subject: feat: implement some of escape sequences --- main.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index ac5484d..b996615 100644 --- a/main.c +++ b/main.c @@ -319,13 +319,8 @@ void pp_tokenize_all(Preprocessor* pp) { } } else if (c == '\'') { start = pp->pos - 1; - ch = pp->src[pp->pos]; - if (ch == '\\') { + if (pp->src[pp->pos] == '\\') { ++pp->pos; - ch = pp->src[pp->pos]; - if (ch == 'n') { - ch = '\n'; - } } pp->pos += 2; tok->kind = PpTokenKind_character_constant; @@ -576,8 +571,20 @@ void tokenize_all(Lexer* l) { ch = pp_tok->raw.data[1]; if (ch == '\\') { ch = pp_tok->raw.data[2]; - if (ch == 'n') { + if (ch == 'a') { + ch = '\a'; + } else if (ch == 'b') { + ch = '\b'; + } else if (ch == 'f') { + ch = '\f'; + } else if (ch == 'n') { ch = '\n'; + } else if (ch == 'r') { + ch = '\r'; + } else if (ch == 't') { + ch = '\t'; + } else if (ch == 'v') { + ch = '\v'; } } buf = calloc(4, sizeof(char)); -- cgit v1.2.3-70-g09d2