aboutsummaryrefslogtreecommitdiff
path: root/src/c_tokenizer.hpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-06-16 14:34:38 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-06-16 14:34:38 -0400
commitc0f9012bed2e0646d15d454cffb971f4b7368edf (patch)
tree643c04eac9c5f091c9f9b57c1114f05ca9953bb0 /src/c_tokenizer.hpp
parent865b53f2860405a718262abf9a794d2bf9529dbc (diff)
downloadzig-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.hpp24
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;
};