Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在用 Groovy 编写 DSL 来破解 BASIC 脚本。我正在考虑如何处理 BASIC 数组。
使用 MOP 来处理类似的事情似乎很容易:
100 LET X = A(5)
当 A 为 DIMed 时,我将动态声明 A 闭包,并且此 A 闭包将根据其参数返回一个值。但处理起来并不那么简单:
110 LET A(5) = Y
因为我不能从 Groovy 引用返回。除了解析 A(5) 是左值还是右值之外,有人能想到解决办法吗?
没有简单的答案,请记住,即使您解决了这个问题,您仍然必须处理 BASIC 条件(例如“IF a = 10 then ...”)。您可能可以通过明智地使用 AST 转换来获得所需的东西,但这可能并不比编写自己的自定义解析器更容易。换句话说,我认为你注定要失败,如果可能的话,应该做一些除了编写 BASIC 脚本之外的事情。