在 XText 词法分析器中重新排序标记流

Reorder token stream in XText lexer

我正在尝试使用 XText lex/parse 一种现有语言。我已经决定我将使用自定义 ANTLRv3 词法分析器,因为该语言不能以上下文无关的方式进行词法分析。幸运的是,我不需要解析器信息;仅先前遇到的标记就足以决定词法分析模式。

目标语言有一个 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 中产生问题?

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

如果您要根据一条规则开始输入,则必须考虑后续部分的 AST 上下文才能知道如何自动完成。同时,这也会让用户感到很困惑。

最后,我将因此根本不支持该语言的这种晦涩的特性。相反,将构建 AST,以便(合理地)分为两部分的部分仍将正确解析。