如何在球拍中本地更改阅读规则?

问题描述 投票:3回答:1

我正在考虑在球拍中嵌入J,因为我发现了existing project,我想在此基础上再接再厉。就像现在一样,通过传递J program string to a Racket form进行评估:

> (j "4 * 1 + 4")
> 20

由于J使用引号,双引号和其他ASCII字符作为字符串传递时需要转义,我想将评估策略更改为:

> (j 4 * 1 + 4)
> 20

这对应于评估球拍形式的cdr,显然需要locally change the reader。但是,当我尝试将评估功能更改为:

(define (j exp)
  (jeval #reader"jexp.rkt" exp))

我得到一个“未绑定的标识符”错误,因为输入端口'exp'被解释为litterally而不用'exp'替换它的值。我该如何管理?

syntax racket interpreter evaluation j
1个回答
1
投票

像这样改变读者不是可以在解析过程的后期完成的事情。在你给出的例子中,Racket如何知道嵌入式J程序何时结束?

我想你想看一下“球拍指南”中的“创建语言”部分:

https://docs.racket-lang.org/guide/languages.html

© www.soinside.com 2019 - 2024. All rights reserved.