ANTLR 解析器空指针异常



我正在尝试将操作放入C函数语法中,但出现错误。例如:

expressionStatement returns [String value]
    :   expression? ';' {$value = (($expression.value != null)?$expression.value:"") + ";";}
    ;

请查看上述规则,并让我知道我是否做对了返回表达式值。请注意,该规则具有条件(?)。语法使用 antlr 正确运行以生成 java 文件,并且 java 文件也正确编译,但是当我使用代码运行它进行解析时,它会给出空指针异常。

请尽快回复我,在这种情况下如何正确编写操作?

如果expression表达式不匹配,则$expression == null $expression.value是 NullPointerExceptions。

尝试:

expressionStatement returns [String value]
:   expression? ';' {
                     if($expression != null){
                       if($expression.value != null){
                         $value = $expression.value
                       }else{
                         $value = "";
                       }
                       $value  += ";";
                     }
                    }
;

相关内容

  • 没有找到相关文章

最新更新