【发布时间】:2011-01-28 11:49:28
【问题描述】:
我即将为 OpenEdge(一种 4GL 数据库语言)编写解析器,并且我想使用 ANTLR(或类似语言)。
我认为这可能是一个问题有两个原因:
-
OpenEdge 是一种 4GL 数据库语言,它允许以下结构:
assign customer.name = 'Customer name' customer.age = 20 .末尾的
.是行分隔符,此语句结合了两个数据库字段的分配。 OpenEdge 有更多这样的结构; -
我需要保留源文件的所有细节,所以我不能在解析文件之前扩展预处理器语句,所以:
// file myinc.i 7 * 14 // source.p assign customer.age = {myinc.i}.在上面的示例中,我需要保留
customer.age是使用{myinc.i}而不是7 * 14分配的事实。
我可以使用 ANTLR 来实现这一点还是需要编写自己的解析器?
更新:
我需要这个解析器不是从它生成可执行文件,而是用于代码分析。这就是为什么我需要 AST 来包含使用了 include 的事实。
【问题讨论】: