scanner: exponent without sign
parent
1007dd8f23
commit
80861f2219
|
@ -213,8 +213,13 @@ fn (s mut Scanner) ident_dec_number() string {
|
||||||
}
|
}
|
||||||
// scan exponential part
|
// scan exponential part
|
||||||
mut has_exponential_part := false
|
mut has_exponential_part := false
|
||||||
if s.expect('e+', s.pos) || s.expect('e-', s.pos) {
|
if s.expect('e', s.pos) || s.expect('E', s.pos) {
|
||||||
exp_start_pos := s.pos += 2
|
exp_start_pos := (s.pos++)
|
||||||
|
|
||||||
|
if s.text[s.pos] in [`-`, `+`] {
|
||||||
|
s.pos++
|
||||||
|
}
|
||||||
|
|
||||||
for s.pos < s.text.len && s.text[s.pos].is_digit() {
|
for s.pos < s.text.len && s.text[s.pos].is_digit() {
|
||||||
s.pos++
|
s.pos++
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,8 +208,13 @@ fn (s mut Scanner) ident_dec_number() string {
|
||||||
}
|
}
|
||||||
// scan exponential part
|
// scan exponential part
|
||||||
mut has_exponential_part := false
|
mut has_exponential_part := false
|
||||||
if s.expect('e+', s.pos) || s.expect('e-', s.pos) {
|
if s.expect('e', s.pos) || s.expect('E', s.pos) {
|
||||||
exp_start_pos := s.pos += 2
|
exp_start_pos := (s.pos++)
|
||||||
|
|
||||||
|
if s.text[s.pos] in [`-`, `+`] {
|
||||||
|
s.pos++
|
||||||
|
}
|
||||||
|
|
||||||
for s.pos < s.text.len && s.text[s.pos].is_digit() {
|
for s.pos < s.text.len && s.text[s.pos].is_digit() {
|
||||||
s.pos++
|
s.pos++
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,16 @@ fn test_scan() {
|
||||||
assert c == 9
|
assert c == 9
|
||||||
c = 1_000_000
|
c = 1_000_000
|
||||||
assert c == 1000000
|
assert c == 1000000
|
||||||
|
|
||||||
|
// test float conversion and reading
|
||||||
d := f64(23_000_000e-3)
|
d := f64(23_000_000e-3)
|
||||||
assert int(d) == 23000
|
assert int(d) == 23000
|
||||||
|
mut e := f64(1.2E3) * f64(-1e-1)
|
||||||
|
assert e == -120.0
|
||||||
|
e = f64(1.2E3) * f64(1e-1)
|
||||||
|
assert e == 120.0
|
||||||
|
assert 1.23e+10 == 1.23e10
|
||||||
|
assert 1.23e+10 == 1.23e0010
|
||||||
|
assert -1.23e+10 == 1.23e0010*-1.0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue