| Application | Advertised ADT | Unadvertised |
|---|---|---|
| evaluate | make-ra-stack | make-node |
| process | height | node-element |
| shift? | empty-ra-stack? | node-rest |
| reduce? | top-minus | nodes-down |
| accept? | pop! | node-set-element! |
| tokenize | push! | node-set-rest! |
| reduce! | ||
| operator? | ||
| lower-precedence? | ||
| look-up-value |
Just load the linked-list implementation of stacks (the unadvertised procedures).
Then evaluate can be used:
(evaluate "(1+(2+(3+(4+(5+(6+(7+(8+9))))))))") ⇒ 45