diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2017-06-16 14:34:38 -0400 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2017-06-16 14:34:38 -0400 |
| commit | c0f9012bed2e0646d15d454cffb971f4b7368edf (patch) | |
| tree | 643c04eac9c5f091c9f9b57c1114f05ca9953bb0 /src/c_tokenizer.hpp | |
| parent | 865b53f2860405a718262abf9a794d2bf9529dbc (diff) | |
| download | zig-c0f9012bed2e0646d15d454cffb971f4b7368edf.tar.gz zig-c0f9012bed2e0646d15d454cffb971f4b7368edf.zip | |
parseh: fix not recognizing integer suffixes on hex numbers
Diffstat (limited to 'src/c_tokenizer.hpp')
| -rw-r--r-- | src/c_tokenizer.hpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/c_tokenizer.hpp b/src/c_tokenizer.hpp index 06b2437c88..573391239f 100644 --- a/src/c_tokenizer.hpp +++ b/src/c_tokenizer.hpp @@ -20,12 +20,26 @@ enum CTokId { CTokIdMinus, }; +enum CNumLitSuffix { + CNumLitSuffixNone, + CNumLitSuffixL, + CNumLitSuffixU, + CNumLitSuffixLU, + CNumLitSuffixLL, + CNumLitSuffixLLU, +}; + +struct CNumLitInt { + uint64_t x; + CNumLitSuffix suffix; +}; + struct CTok { enum CTokId id; union { uint8_t char_lit; Buf str_lit; - uint64_t num_lit_int; + CNumLitInt num_lit_int; double num_lit_float; Buf symbol; } data; @@ -47,13 +61,15 @@ enum CTokState { CTokStateOctal, CTokStateGotZero, CTokStateHex, - CTokStateIntSuffix, - CTokStateIntSuffixLong, CTokStateFloat, CTokStateExpSign, CTokStateFloatExp, CTokStateFloatExpFirst, CTokStateStrOctal, + CTokStateNumLitIntSuffixU, + CTokStateNumLitIntSuffixL, + CTokStateNumLitIntSuffixLL, + CTokStateNumLitIntSuffixUL, }; struct CTokenize { @@ -62,8 +78,6 @@ struct CTokenize { bool error; CTok *cur_tok; Buf buf; - bool unsigned_suffix; - bool long_suffix; uint8_t cur_char; int octal_index; }; |
