2

我正在用 Groovy 编写 DSL 来破解 BASIC 脚本。我正在考虑如何处理 BASIC 数组。

使用 MOP 来处理类似的事情似乎很容易:

100 LET X = A(5)

当 A 为 DIMed 时,我将动态声明 A 闭包,并且此 A 闭包将根据其参数返回一个值。但处理起来并不那么简单:

110 LET A(5) = Y

因为我不能从 Groovy 引用返回。除了解析 A(5) 是左值还是右值之外,有人能想到解决办法吗?

4

1 回答 1

0

没有简单的答案,请记住,即使您解决了这个问题,您仍然必须处理 BASIC 条件(例如“IF a = 10 then ...”)。您可能可以通过明智地使用 AST 转换来获得所需的东西,但这可能并不比编写自己的自定义解析器更容易。换句话说,我认为你注定要失败,如果可能的话,应该做一些除了编写 BASIC 脚本之外的事情。

于 2012-06-18T17:22:01.330 回答