![]() |
1
2
您询问了解决此问题的典型方法。以下是两个项目,它们解决了与您描述的项目类似的挑战: Boomerang :使用镜头“聚焦”某些具体语法的抽象含义,更改抽象模型,然后在原始源代码中反映这些更改。
这两个项目都产生了几篇论文,描述了作者采取的方法。据我所知,透镜方法很流行,解析和打印成为
|
![]() |
2
1
这是代码,以防对任何人都有帮助。它是为 Parsy
另一方面,我想这里真正的问题是我使用了一个解析器组合器库,而不是一个适当的两阶段解析过程。在传统解析中,标记器将处理保留/跳过任何空格/注释/语法错误,使它们都有效地保留空格,并且对解析器不可见。 |
![]() |
LudvigH · 行模式的Parsec开始? 7 年前 |
![]() |
ddccffvv · Parsec:一行上有多个可能的选项 11 年前 |
![]() |
Sibi · haskell中的attoparsec或parsec 11 年前 |