質問

This is my ANTLR script:

greeting:
  'hello'
  NAME
  { /* do something with $NAME.text */ }
  ;

This input causes an NPE because NAME is null:

hello

I understand that I can check whether $NAME is not null and only then do my manipulations with $NAME.text, but I have that problem in many places in the script. Should I always do if ($NAME != null) or maybe there is some other more elegant mechanism?

役に立ちましたか?

解決

In ANTLR 4, you should relocate the embedded actions to a listener or visitor which you separately execute after the parsing phase is complete. You can use the Parser.getNumberOfSyntaxErrors method prior to starting that phase to see if any parse errors occurred, and if so, stop processing at that point.

This covers all actions associated with the parser at once and results in a much cleaner overall code structure.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top