(keyword-match in "def")
(set! node
(syntree 'define ""
- (list (token->syntree (token-match in 'id)) (dlang/expression in))))
+ (list
+ (token->syntree (token-match in 'id))
+ (if (test-apply dlang/id-list in)
+ (dlang/func-body in)
+ (dlang/expression in)))))
(token-match in 'term)
node)
node)
(define (dlang/func in)
- (define node (syntree 'func "" '()))
+ (define node '())
(keyword-match in "func")
- (syntree-children-set! node
- (list (dlang/id-list in) (dlang/expr-block in 'term)))
+ (set! node (dlang/func-body in))
(token-match in 'term)
- (syntree-type-set! node 'func)
node)
+(define (dlang/func-body in)
+ (syntree 'func ""
+ (list
+ (dlang/id-list in)
+ (dlang/expr-block in 'term))))
+
(define (dlang/basic-expr in)
(if (token-matches? in 'lpar)
(dlang/operator-app in)