|
257 | 257 |
|
258 | 258 | (define (parse-datum e) |
259 | 259 | (cond |
260 | | - ((boolean? e) (constant 'boolean e unitless)) |
261 | | - ((number? e) (constant 'number e unitless)) |
262 | | - ((symbol? e) (constant 'symbol e unitless)) |
263 | | - ((vector? e) (constant 'vector (vector->list e) unitless)) |
| 260 | + ((boolean? e) (make-constant 'boolean e unitless)) |
| 261 | + ((number? e) (make-constant 'number e unitless)) |
| 262 | + ((symbol? e) (make-constant 'symbol e unitless)) |
| 263 | + ((vector? e) (make-constant 'vector (vector->list e) unitless)) |
264 | 264 | (else (salt:error 'parse-datum "Unknown datum: " e)) |
265 | 265 | )) |
266 | 266 |
|
|
536 | 536 | (d 'parse-function "formals-ast = ~A formals-env = ~A~%" formals-ast formals-env) |
537 | 537 | (match exp-or-body |
538 | 538 | (('= . expr) |
539 | | - (function |
| 539 | + (make-function |
540 | 540 | (free-variable-name |
541 | 541 | (parse-variable env function-name)) |
542 | 542 | formals-ast |
|
561 | 561 | ))) |
562 | 562 |
|
563 | 563 | (define (parse-define-unit pattern rhs env) |
| 564 | + (d 'parse-define-unit "pattern = ~A rhs = ~A~%" pattern rhs) |
564 | 565 | (match rhs |
565 | 566 | ((('dim-vector . dims) factor-expr) |
566 | 567 | (make-unit (free-variable-name (parse-variable env pattern)) |
|
569 | 570 | ((dim-expr factor-expr) |
570 | 571 | (d 'parse-define-unit "dim-expr = ~A~%" dim-expr) |
571 | 572 | (make-unit (free-variable-name (parse-variable env pattern)) |
572 | | - (parse-sym-infix-expr dim-expr) |
| 573 | + (parse-dim pattern (parse-sym-infix-expr dim-expr)) |
573 | 574 | (parse-sym-infix-expr factor-expr) '())) |
574 | 575 | (else |
575 | 576 | (salt:error 'parse-define-unit "Not a valid unit definition: " rhs)) |
|
595 | 596 | (recur rst dim num)) |
596 | 597 |
|
597 | 598 | (else |
598 | | - (external |
| 599 | + (make-external |
599 | 600 | (gensym 'ext) |
600 | 601 | (free-variable-name |
601 | 602 | (parse-variable env pattern)) |
|
620 | 621 | (recur rst dim order sym)) |
621 | 622 |
|
622 | 623 | (else |
623 | | - (externalev |
| 624 | + (make-externalev |
624 | 625 | (gensym 'extev) |
625 | 626 | (free-variable-name |
626 | 627 | (parse-variable env pattern)) |
|
674 | 675 | Unity)) |
675 | 676 | (('= 'parameter ('dim u) . expr) |
676 | 677 | (let ((dim-val (parse-dim pattern u))) |
677 | | - (parameter |
| 678 | + (make-system-parameter |
678 | 679 | (gensym 'p) |
679 | 680 | (free-variable-name |
680 | 681 | (parse-variable env pattern)) |
681 | 682 | (parse-expression env (parse-sym-infix-expr expr)) |
682 | 683 | dim-val) |
683 | 684 | )) |
684 | 685 | (('= 'parameter . expr) |
685 | | - (parameter |
| 686 | + (make-system-parameter |
686 | 687 | (gensym 'p) |
687 | 688 | (free-variable-name |
688 | 689 | (parse-variable env pattern)) |
|
702 | 703 | (declared-constant |
703 | 704 | (free-variable-name |
704 | 705 | (parse-variable env pattern)) |
705 | | - (constant |
| 706 | + (make-constant |
706 | 707 | 'number |
707 | 708 | (constant-value cvalue) |
708 | 709 | (cdr unit-assoc)) |
|
729 | 730 | (d 'parse-equations "pattern = ~A~%rhs = ~A~%" pattern rhs) |
730 | 731 | (match rhs |
731 | 732 | (('= . rhs) |
732 | | - (eq (parse-variable env pattern) |
| 733 | + (make-eq (parse-variable env pattern) |
733 | 734 | (parse-expression env (parse-sym-infix-expr rhs)))) |
734 | 735 | (else |
735 | 736 | (salt:error 'parse-equation "Not a valid rhs: " rhs)) |
|
0 commit comments