我正在尝试将操作放入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 += ";";
}
}
;