Antlr:引用尚未解析的数据

时间:2017-04-12 03:15:12

标签: java antlr grammar antlr4

我目前正在尝试实现一个Antlr v4语法,该语法将文本电子表格作为输入(每个'单元格由选项卡分隔)。语法支持引用其他单元格,包括算术表达式中使用的引用。输出与输入相同,但所有表达式都已完成,每个引用都被引用的单元格的整数值替换。

示例输入:

1    9    5
     4    3    A3
     =A2+C3    6

并输出:

1    9    5
     4    3    5
     15

我不确定如何在我的java应用程序中实现解析器。由于单元格可能包含尚未解析的单元格的引用,因此语法必须在计算表达式之前完成解析单元格。根据我的理解,语法访问者可以在解析期间返回值,但是无法计算包含对尚未解析的单元格的引用的表达式。

最好的方法是什么?我能够确定的唯一解决方案是将语法分成两个较小的语法,一个解析单元格,另一个解析单元格内的表达式。但是,我宁愿只用一个解析过程来保持简单。

在一句话中,在Antlr4中,处理对尚未解析的数据的引用的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

在解析运行期间无需评估表达式。通过两个步骤完成整个过程:首先解析输入以获取解析树,然后使用访问者对其进行评估。在第一步之后,所有单元格都被解析为解析树,因此可以在评估步骤中解析。