aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lexer.go9
1 files changed, 7 insertions, 2 deletions
diff --git a/lexer.go b/lexer.go
index a9938c5..329d97e 100644
--- a/lexer.go
+++ b/lexer.go
@@ -94,8 +94,12 @@ func (y *yyLex) run() {
y.ignore()
case QUOTE:
y.lexQuoted()
- case DIGIT, NEG:
- y.lexNumber()
+ case DIGIT, NEG, DOT:
+ if t == DOT && Tokens[y.peek()] != DIGIT {
+ y.emit(t)
+ } else {
+ y.lexNumber()
+ }
case CHAR:
y.lexString()
default:
@@ -140,6 +144,7 @@ func (y *yyLex) lexString() {
func (y *yyLex) lexNumber() {
t := INTEGER
+ y.backup()
y.acceptToken(NEG)
y.acceptDigits()
if y.acceptToken(DOT) {