aboutsummaryrefslogtreecommitdiff
path: root/parse.go
diff options
context:
space:
mode:
Diffstat (limited to 'parse.go')
-rw-r--r--parse.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/parse.go b/parse.go
index 8ac4c5d..f8da385 100644
--- a/parse.go
+++ b/parse.go
@@ -1267,7 +1267,8 @@ func parseCall(toks *tokens) (*callExpr, error) {
return nil, nil
}
- args, err := parseArg(toks)
+ numArgs := 0
+ args, err := parseArg(toks, &numArgs)
if err != nil {
return nil, err
}
@@ -1276,10 +1277,15 @@ func parseCall(toks *tokens) (*callExpr, error) {
return nil, err
}
- return &callExpr{funcName: nameTok.value, args: args, ln: nameTok.line}, nil
+ return &callExpr{
+ funcName: nameTok.value,
+ args: args,
+ numArgs: numArgs,
+ ln: nameTok.line,
+ }, nil
}
-func parseArg(toks *tokens) (*argument, error) {
+func parseArg(toks *tokens, numTotal *int) (*argument, error) {
ok, err := toks.match(rparen)
if err != nil {
return nil, err
@@ -1300,14 +1306,16 @@ func parseArg(toks *tokens) (*argument, error) {
}
if !ok {
toks.unreadToken()
+ *numTotal++
return &argument{value: arg}, nil
}
- next, err := parseArg(toks)
+ next, err := parseArg(toks, numTotal)
if err != nil {
return nil, err
}
+ *numTotal++
return &argument{value: arg, next: next}, nil
}