Разбор комментариев с PetitParser в Pharo
Есть ли более простой способ разобрать 1-строчные комментарии, чем это?
comment
^ '//' asParser ,
(#any asParser starLazy: (#newline asParser)) ,
#newline asParser
==> [ :result | nil "Ignore comments" ]
program
^ (comment / instruction) star
==> [ :result | N2TProgramNode new
setNodes: (result copyWithout: nil) ]
Я особенно неуверен в повторении (#newline asParser) и #copyWithout:.
После ответа Лукаса я придумал гораздо более простое решение:
program
^ programEntity star
==> [ :result | N2TProgramNode new setNodes: result]
programEntity
^ instruction trim: ignorable
ignorable
^ comment / #space asParser
comment
^ '//' asParser , #newline asParser negate star
Ответы
Ответ 1
Почему бы и следующий комментатор комментариев не работал?
'//' asParser , #newline asParser negate star
Также вы можете включить разбор комментариев в синтаксический анализ whitespace с помощью trim:
(если это позволяет грамматика), поэтому вам не нужно постоянно об этом думать.