Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,23 @@
|
|||
(de ast (Str)
|
||||
(let *L (str Str "")
|
||||
(aggregate) ) )
|
||||
|
||||
(de aggregate ()
|
||||
(let X (product)
|
||||
(while (member (car *L) '("+" "-"))
|
||||
(setq X (list (intern (pop '*L)) X (product))) )
|
||||
X ) )
|
||||
|
||||
(de product ()
|
||||
(let X (term)
|
||||
(while (member (car *L) '("*" "/"))
|
||||
(setq X (list (intern (pop '*L)) X (term))) )
|
||||
X ) )
|
||||
|
||||
(de term ()
|
||||
(let X (pop '*L)
|
||||
(cond
|
||||
((num? X) X)
|
||||
((= "+" X) (term))
|
||||
((= "-" X) (list '- (term)))
|
||||
((= "(" X) (prog1 (aggregate) (pop '*L)))) ) )
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
: (ast "1+2+3*-4/(1+2)")
|
||||
-> (+ (+ 1 2) (/ (* 3 (- 4)) (+ 1 2)))
|
||||
|
||||
: (ast "(1+2+3)*-4/(1+2)")
|
||||
-> (/ (* (+ (+ 1 2) 3) (- 4)) (+ 1 2))
|
||||
Loading…
Add table
Add a link
Reference in a new issue