我正在尝试将操作放入C
函数语法,但会出错。
例如:
expressionStatement returns [String value]
: expression? ';' {$value = (($expression.value != null)?$expression.value:"") + ";";}
;
请查看上述规则,如果我正确地返回表达式值,请告诉我。请注意,规则有条件(?
)。
使用antlr
正确运行语法以生成正确编译的java文件和java文件,但是当我使用代码运行它来解析时,它会给出空指针异常。
请尽快回复我,在这种情况下如何正确编写动作?
答案 0 :(得分:0)
如果expression
表达式与$expression == null
不匹配,那么$expression.value
就是NullPointerExceptions。
尝试:
expressionStatement returns [String value]
: expression? ';' {
if($expression != null){
if($expression.value != null){
$value = $expression.value
}else{
$value = "";
}
$value += ";";
}
}
;