aboutsummaryrefslogtreecommitdiff
path: root/parse.go
diff options
context:
space:
mode:
Diffstat (limited to 'parse.go')
-rw-r--r--parse.go23
1 files changed, 8 insertions, 15 deletions
diff --git a/parse.go b/parse.go
index 3f42f44..289c205 100644
--- a/parse.go
+++ b/parse.go
@@ -740,31 +740,24 @@ func parseStringSegment(toks *tokens) (*string, error) {
}
func parseNumber(toks *tokens) (*numberExpr, error) {
- typeTok, ok := toks.consumeToken()
+ numTok, ok := toks.consumeToken()
if !ok {
return nil, unexpectedEOF
}
- if typeTok.kind != identifier {
- return nil, expected{want: identifier, got: typeTok}
- }
-
- if err := toks.mustMatch(lparen); err != nil {
- return nil, err
+ if numTok.kind != number {
+ toks.unreadToken()
+ return nil, nil
}
- numTok, ok := toks.consumeToken()
+ typeTok, ok := toks.consumeToken()
if !ok {
return nil, unexpectedEOF
}
- if numTok.kind != number {
- return nil, expected{want: number, got: numTok}
- }
-
- if err := toks.mustMatch(rparen); err != nil {
- return nil, err
+ if typeTok.kind != identifier {
+ return nil, expected{want: identifier, got: typeTok}
}
- return &numberExpr{typ: typeTok.value, s: numTok.value, ln: typeTok.line}, nil
+ return &numberExpr{typ: typeTok.value, s: numTok.value, ln: numTok.line}, nil
}