跳转至

Project 4

Expression Attributes

我们说:每个 expression 具有两种属性:类型和值。

自然地,我们希望每个 ANTLR 中的 ExpressionContext 类型具有以上字段,那么如何实现?

感谢 Gemini 2.5 Pro:

alt text

Splc.g4expression 中添加以下内容 returns [ExprAttr attr]

expression returns [ExprAttr attr]
    : Identifier                                                            # ExprID
    | Number                                                                # ExprNumber
    | Char                                                                  # ExprChar
    | LPAREN expression RPAREN                                              # ExprParen
    // ...
    ;

并添加一个类 ExprAttr,位于 impl.ExprAttr,在其中自由添加我们想包含的属性。

然后,在 Splc.g4 的开头添加以下内容,表示在生成的 SplcParser.java 文件的头部复制粘贴其中的文字。

@parser::header {
    import impl.ExprAttr;
}

随后,重新生成 ANTLR 即可。