10
解析1行注释的方法比这更简单吗?在Pharo中使用PetitParser解析注释
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