【发布时间】:2015-01-27 12:17:16
【问题描述】:
我正在尝试使用 Antlr4 为状态转换语言编写语法
这个系统有变量(例如,状态),声明一次,可以在别处引用。
我的问题是:Antlr4 是否支持 XText 中的交叉引用?
如果 Antlr4 不提供此功能,我想一种“简单”的方法是使用内存 Map 来解析令牌并将信息存储在此 Map 中?
【问题讨论】:
我正在尝试使用 Antlr4 为状态转换语言编写语法
这个系统有变量(例如,状态),声明一次,可以在别处引用。
我的问题是:Antlr4 是否支持 XText 中的交叉引用?
如果 Antlr4 不提供此功能,我想一种“简单”的方法是使用内存 Map 来解析令牌并将信息存储在此 Map 中?
【问题讨论】:
简短的回答是否定的,XText 中的交叉引用可以实现一定程度的复杂性,这在基于 EMF 的系统之外很难复制。
但是,在最简单的形式中,交叉引用只需要一个静态符号表。根据您的需要,基于状态遍历的symbol versioning 可能就足够了。版本控制通常在树遍历期间执行。静态符号的初始化可以在基于语法的操作中执行,但最好在解析器而不是词法分析器中完成。
【讨论】: