在XText词法分析器中重新排序令牌流

时间:2018-06-14 13:44:32

标签: antlr xtext

我正在尝试使用XText来解析/解析现有语言。我已经决定使用自定义的ANTLRv3词法分析器,因为语言不能以无上下文的方式使用。幸运的是,我不需要解析器信息;只是以前遇到的令牌足以决定lexing模式。

目标语言有一个InputSection,可以描述如下:InputSection: INPUT_SECTION A=ID B=ID;。但是,它可以用两种不同的方式指定。

; The canonical way
$InputSection Foo Bar
$SomeOtherSection Fonzie

; The haphazard way
$InputSection Foo
$SomeOtherSection Fonzie
$InputSection Bar

在将其传递给解析器之前,我是否可以使用TokenStreamRewriter以规范方式重新排序所有标记?或者这会在以后的XText中产生问题吗?

1 个答案:

答案 0 :(得分:0)

经过大量调查,我得出的结论是,编辑器工具本身确实不适合此类问题。

如果您要开始输入一条规则,则必须考虑后续各节中的AST上下文,以了解如何自动完成。同时,这会使用户感到困惑。

最后,我将因此简单地不支持该语言的晦涩之处。取而代之的是,将构造AST,以便在两部分之间合理划分的部分仍然可以正确解析。