diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-08-13 23:37:08 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:06:21 +0900 |
| commit | cefe477fdf8c8a7a081e08add9cafbe1d8a2acf0 (patch) | |
| tree | eb0e53cfebe273636ebaf3d6b5e50936903302ad /preprocess.c | |
| parent | 7685bff588632a486a9e677c63ae7123b112ba9e (diff) | |
| download | ducc-cefe477fdf8c8a7a081e08add9cafbe1d8a2acf0.tar.gz ducc-cefe477fdf8c8a7a081e08add9cafbe1d8a2acf0.tar.zst ducc-cefe477fdf8c8a7a081e08add9cafbe1d8a2acf0.zip | |
feat: implement shift operators
Diffstat (limited to 'preprocess.c')
| -rw-r--r-- | preprocess.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/preprocess.c b/preprocess.c index 776fe4b..cfc8659 100644 --- a/preprocess.c +++ b/preprocess.c @@ -68,6 +68,7 @@ enum TokenKind { TokenKind_keyword__Imaginary, TokenKind_le, + TokenKind_lshift, TokenKind_lt, TokenKind_literal_int, TokenKind_literal_str, @@ -82,6 +83,7 @@ enum TokenKind { TokenKind_percent, TokenKind_plus, TokenKind_plusplus, + TokenKind_rshift, TokenKind_semicolon, TokenKind_slash, TokenKind_star, @@ -220,6 +222,8 @@ const char* token_kind_stringify(TokenKind k) { return "_Imaginary"; else if (k == TokenKind_le) return "le"; + else if (k == TokenKind_lshift) + return "<<"; else if (k == TokenKind_lt) return "lt"; else if (k == TokenKind_literal_int) @@ -248,6 +252,8 @@ const char* token_kind_stringify(TokenKind k) { return "+"; else if (k == TokenKind_plusplus) return "++"; + else if (k == TokenKind_rshift) + return ">>"; else if (k == TokenKind_semicolon) return ";"; else if (k == TokenKind_slash) @@ -616,6 +622,9 @@ void pp_tokenize_all(Preprocessor* pp) { if (pp->src[pp->pos] == '=') { ++pp->pos; tok->kind = TokenKind_le; + } else if (pp->src[pp->pos] == '<') { + ++pp->pos; + tok->kind = TokenKind_lshift; } else { tok->kind = TokenKind_lt; } @@ -623,6 +632,9 @@ void pp_tokenize_all(Preprocessor* pp) { if (pp->src[pp->pos] == '=') { ++pp->pos; tok->kind = TokenKind_ge; + } else if (pp->src[pp->pos] == '>') { + ++pp->pos; + tok->kind = TokenKind_rshift; } else { tok->kind = TokenKind_gt; } |
