1515
1616(require "../exceptions.rkt " )
1717
18+ (require "../utils.rkt " )
19+
1820(define (extend-params-scopes -scope params param-values)
1921 (cases eval-func-param* params
2022 (empty-eval-func-param () -scope)
4345 (cases expression* -expressions
4446 (empty-expr () (list))
4547 (expressions (expr rest-exprs)
46- (cons (value-of expr scope-index) (expression*-> list-val rest-exprs scope-index))
48+ (append (expression*->list-val rest-exprs scope-index) (list (value-of expr scope-index) ))
4749 )
4850 )
4951 )
9193
9294
9395(define (apply-for iter iter_list sts scope-index parent_stmt)
94- (begin (display-lines (list iter_list))
95- (cond
96- [(not (pair? iter)) (report-not-pair iter_list parent_stmt)]
97- [(null? iter_list) null]
98- [else (let ([_ (extend-scope-index scope-index iter (car iter_list))])
99- (let ([first_exec_result (exec-stmts sts scope-index)])
100- (cond
101- [(equal? first_exec_result (new-break)) null]
102- [else (apply-for iter (cdr iter_list) sts scope-index parent_stmt)])
103- )
104- )]
105- )))
96+ (begin
97+ ; (display-lines (list iter_list))
98+ (cond
99+ [(not (pair? iter_list)) (report-not-pair iter_list parent_stmt)]
100+ [(null? iter_list) null]
101+ [else (begin
102+ (extend-scope-index scope-index iter (car iter_list))
103+ ; (display-lines (list (get-scope-by-index scope-index)))
104+ (let ([first_exec_result (exec-stmts sts scope-index)])
105+ (cond
106+ [(equal? first_exec_result (new-break)) null]
107+ [else (apply-for iter (cdr iter_list) sts scope-index parent_stmt)])
108+ )
109+ )]
110+ )))
106111
107112(define (apply-if cond-val if-sts else-sts scope-index parent_stmt)
108113 (cond
120125 (extend-scope-index assign-scope-index var val))
121126 )
122127
128+ (define (apply-print vals)
129+ ; (display-lines (list "printing"))
130+ (display-lines vals)
131+ )
132+
123133(define (exec stmt scope-index)
124134 (cases statement stmt
125135 (assign (var expr) (apply-assign var (value-of expr scope-index) scope-index))
144154 (for_stmt (iter list_exp sts) (apply-for
145155 iter (value-of list_exp scope-index) sts scope-index
146156 stmt))
157+ (print_stmt (expressions) (apply-print (expression*->list-val expressions scope-index)))
147158 )
148159 )
149- ;(trace exec value-of)
160+
150161(define (exec-stmts stmts scope-index)
151162 (cond
152163 [(null? stmts) null]
166177 (reset-scope)
167178 (add-scope (init-scope))
168179 (exec-stmts program 0 )
180+ (void)
169181 )
170182 )
171183
184+ ; (trace exec-stmts exec value-of)
185+
172186(provide (all-defined-out ))
0 commit comments