diff options
Diffstat (limited to 'Parser')
-rw-r--r-- | Parser/tokenizer.c | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 86106b3..62a3da0 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -435,30 +435,37 @@ tok_get(tok, p_start, p_end) c = tok_nextc(tok); } } + if (c == 'l' || c == 'L') + c = tok_nextc(tok); } else { /* Decimal */ do { c = tok_nextc(tok); } while (isdigit(c)); - /* Accept floating point numbers. - XXX This accepts incomplete things like 12e or 1e+; - worry about that at run-time. - XXX Doesn't accept numbers starting with a dot */ - if (c == '.') { - fraction: - /* Fraction */ - do { - c = tok_nextc(tok); - } while (isdigit(c)); - } - if (c == 'e' || c == 'E') { - /* Exponent part */ + if (c == 'l' || c == 'L') c = tok_nextc(tok); - if (c == '+' || c == '-') - c = tok_nextc(tok); - while (isdigit(c)) { + else { + /* Accept floating point numbers. + XXX This accepts incomplete things like + XXX 12e or 1e+; worry run-time. + XXX Doesn't accept numbers + XXX starting with a dot */ + if (c == '.') { + fraction: + /* Fraction */ + do { + c = tok_nextc(tok); + } while (isdigit(c)); + } + if (c == 'e' || c == 'E') { + /* Exponent part */ c = tok_nextc(tok); + if (c == '+' || c == '-') + c = tok_nextc(tok); + while (isdigit(c)) { + c = tok_nextc(tok); + } } } } |