使用球拍解析S表达式

时间:2018-07-05 03:40:47

标签: racket

我想读取一个标准的球拍文件,并将其中的s表达式解析为一个列表。例如给出以下输入:

(define y 1)
(define (foo x)
  (+ x 1))

它应该返回:'("(define y 1)" "(define (foo x) (+ x 1))")

最简单的方法是什么?我当时在考虑使用port->string和朋友,但这仍然需要匹配)。有更简单的东西吗?

1 个答案:

答案 0 :(得分:2)

您的预期输出有些混乱。为什么要将各个s表达式作为字符串?无论如何,您可能都希望使用port->listfile->list,它们都产生一个s表达式列表。在示例输入中使用它们会产生以下结果:

'((define y 1) (define (foo x) (+ x 1))

如果出于某些原因确实希望将各个s表达式作为字符串,则可以始终通过在结果上映射~s来将它们转换回字符串,但是我不确定为什么这样的事情会有用。