【发布时间】:2018-01-12 15:38:02
【问题描述】:
我是计划新手,很难使用 car 和 cdr。我在 ast 中有一个 AST 字符串文字。
(define ast '(program
((assign (var i int) (call (func getint void int) ()))
(assign (var j int) (call (func getint void int) ()))
(while (neq (var i int) (var j int))
((if (gt (var i int) (var j int))
((assign (var i int) (minus (var i int) (var j int))))
((assign (var j int) (minus (var j int) (var i int)))))))
(call (func putint int void) ((var i int)))))
)
我知道 car 返回了 ast 的负责人。所以
(car ast)
返回'程序。
我很困惑如何使用 car 和 cdr 从 ast 中获取字符串,例如 'assign、'while、'if 和 'call。
【问题讨论】:
-
你想用'assign等做什么?只需获取所有列表,或者您是否尝试解释 AST?
-
我正在尝试遍历 AST 并对其进行解释。
-
你熟悉递归吗?您可以尝试编写一个递归函数来执行此操作吗?
-
使用
match参见文档(指南)。 -
这不是字符串文字,而是符号列表。
标签: functional-programming scheme racket