【问题标题】:ANTLR and arraysANTLR 和数组
【发布时间】:2011-10-24 09:29:54
【问题描述】:

我有关于使用 Java+ANTLR 组合实现数组的问题。 (我主要说的是 java/c 风格的数组)。

所以基本上我问的是你如何实现这样的功能,如果已经有这样的例子,或者是否有人可以指出任何可能指向解决它的东西。

另一方面,我已经搜索了一些可能的解决方案。我看到的主要问题 是用户可以创建各种维度的数组,如果他或她愿意甚至会发疯(比如创建 5 维数组或更糟)。

虽然这样的语法相当简单,比如

new ID (INT (',' INT)* )

后端确实有点涉及。正如我所说,用户可以输入任意数量的维度,因此应该动态创建数组维度。 (至少在我看来,也许我把事情复杂化了?)

经过搜索,我确实发现了一些可以完美解决这个问题的方法,这里是问题的链接:

Is it possible to dynamically build a multi-dimensional array in Java?

当然,我的问题是,这个可行的例子是否有点(至少可以这么说)复杂?有没有更优雅的解决方案?

考虑到这一点,我在想也许答案可能在于以某种方式改变多维 进入更线性的结构?这样的东西有用吗?对stackoverflow的简单搜索指出了许多解决方案 对此,例如:

Algorithm to convert a multi-dimensional array to a one-dimensional array

是否值得朝那个方向搜索?

现在,最后,考虑到数组在许多语言中确实是共同的特征,我必须惊讶地发现在搜索 ANTLR 邮件列表后没有类似的问题,正如我之前所说,这让我相信我'我可能把事情复杂化了? (除非我真的不擅长搜索?)非常感谢反馈。

【问题讨论】:

  • 好的,用户输入类似数组 [][]=new array[5][5] 之类的东西。用户声明二维数组,我想将所有数组成员放入符号表中。两个嵌套循环很好地处理了这个问题,我支持二维数组。(解释器中的 exmethod 循环遍历我解析并创建变量的索引)但是如果用户决定声明 n 维数组,我不能永远嵌套 for 循环,所以我是否可以选择在示例中的第一个链接中使用变量参数,或者其他什么。如果我问如何实现多维数组或沿着这些思路可能会更好?
  • 或者,更简单的解释是,如果有人从 java/c 中删除了数组,我必须把它放回去,到目前为止我看到的唯一解决方案是解析索引,并使用类似于第一个链接的代码来创建所有成员变量。我想知道是否有更简单的方法可以在典型的结构语言中包含对数组的支持?

标签: arrays antlr dsl


【解决方案1】:

如果我没记错的话,你的语法相当于

新字符 4,5,6,7

这有点奇怪。我猜你是真的意思

新字符[4,5,6,7]

但是,从纯句法的角度来看,没有理由不将索引存储在数组中,让语义分析通过而不必担心。

【讨论】:

  • 是的,是的,我的意思是 [4,5,6,7]。如果可能的话,你能详细说明你的最后一句话吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多