【发布时间】:2025-12-06 00:05:01
【问题描述】:
还有比这更简单的解析 1 行 cmets 的方法吗?
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
【问题讨论】:
标签: smalltalk pharo petitparser