Исключение нулевого указателя парсера ANTLR

Я пытаюсь поместить действия в грамматику функции C, но получаю ошибку. Например:

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

Пожалуйста, ознакомьтесь с приведенным выше правилом и дайте мне знать, правильно ли я поступаю, возвращая значение выражения. Обратите внимание, что правило имеет условие (?). Грамматика правильно запускается с antlr для создания файлов Java, и файлы Java также скомпилированы правильно, но когда я запускаю ее с кодом для анализа, она дает исключение нулевого указателя.

Пожалуйста, ответьте мне в ближайшее время, как я могу правильно написать действия в этом случае?


person user3148193    schedule 31.12.2013    source источник


Ответы (1)


Если выражение expression не совпадает, то $expression == null, поэтому $expression.value является NullPointerExceptions.

Пытаться:

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