Dam*_*sou 10 smalltalk pharo petitparser
是否有更简单的方法来解析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) ]
Run Code Online (Sandbox Code Playgroud)
我特别不确定(#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
Run Code Online (Sandbox Code Playgroud)
为什么下面的注释解析器也不能正常工作?
'//' asParser , #newline asParser negate star
Run Code Online (Sandbox Code Playgroud)
此外,您可能希望将注释解析包含在解析的空白区域中trim:(如果语法允许),因此您不必一直考虑它.
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |