首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PetitParser解析法老中的注释

用PetitParser解析法老中的注释
EN

Stack Overflow用户
提问于 2013-02-12 12:40:18
回答 1查看 359关注 0票数 10

有比这更简单的解析1行注释的方法吗?

代码语言:javascript
复制
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的回答之后,我想出了一个简单得多的解决方案:

代码语言:javascript
复制
program
    ^ programEntity star
        ==> [ :result | N2TProgramNode new setNodes: result]

programEntity
    ^ instruction trim: ignorable

ignorable
    ^ comment / #space asParser

comment
    ^ '//' asParser ,  #newline asParser negate star
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-12 17:16:50

为什么下面的注释解析器也不能工作呢?

代码语言:javascript
复制
'//' asParser , #newline asParser negate star

另外,您可能希望将注释的解析包含到使用trim:的空白解析中(如果语法允许的话),所以您不必一直考虑它。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14832807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档