是否有更简单的方法来解析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:。
在Lukas回答之后,我提出了更为简单的解决方案:
program
^ programEntity star
==> [ :result | N2TProgramNode new setNodes: result]
programEntity
^ instruction trim: ignorable
ignorable
^ comment / #space asParser
comment
^ '//' asParser , #newline asParser negate star
答案 0 :(得分:6)
为什么下面的注释解析器也不能正常工作?
'//' asParser , #newline asParser negate star
此外,您可能希望将注释解析包含在使用trim:
解析的空白中(如果语法允许),因此您无需一直考虑它。