时髦的引用返回难题



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

使用 MOP 处理以下内容似乎很容易:

100 LET X = A(5)

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

110 LET A(5) = Y

因为我无法从 Groovy 返回引用。除了解析 A(5) 是左值还是右值之外,有人能想到解决这个问题的方法吗?

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

最新更新