diff options
Diffstat (limited to 'parse.go')
-rw-r--r-- | parse.go | 23 |
1 files changed, 8 insertions, 15 deletions
@@ -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 } |