Antlr4中使用缩进代替括号的方法

5
我目前正在参加“编译器构造”课程,并且在 Antlr 4 中开发了一个简化版的 Java 语法。涉及 Java 语法的部分工作良好,只是与原始的 Java 略有不同。
我被告知不应该使用括号,而应该使用缩进。我尝试了一些从互联网上获取的示例,但仅适用于 Antlr 3,无法在 Antlr 4 中使用。
有人可以帮我解决这个缩进问题吗?或者为 Antlr 4 提供 Python 语法?
2个回答

2
我写了一个小型库,可以帮助处理这个使用案例:antlr-denter
简单来说,你需要在你的语法中定义INDENT和DEDENT标记,并进行一些样板工作,将antlr-denter连接到antlr生成的词法分析器中,然后就可以开始使用了。例如,像这样的代码:
hello:
    world
<eof>

可能会生成令牌流WORD COLON INDENT WORD DEDENT

2

关于官方 GitHub ANTLR4 语法库仓库 怎么样?您可以找到许多常见的语言语法。甚至有一个 python3 目录,其中包含 Python3.g4

这应该会对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接