2013-02-12 12 views
10

1 satırlık yorumlara göre ayrıştırmanın daha basit bir yolu var mı?PetitParser ile Pharo yorumunu yorumlama Pharo

comment 
    ^'//' asParser , 
     (#any asParser starLazy: (#newline asParser)) , 
     #newline asParser 
        ==> [ :result | nil "Ignore comments" ] 
program 
    ^(comment/instruction) star 
     ==> [ :result | N2TProgramNode new 
           setNodes: (result copyWithout: nil) ] 

I (#newline asParser) tekrarı ve #copyWithout hakkında özellikle emin değilim :.

Lukas'ın cevabı sonra çok daha basit aşağıdaki çözüm geldi:

program 
    ^programEntity star 
     ==> [ :result | N2TProgramNode new setNodes: result] 

programEntity 
    ^instruction trim: ignorable 

ignorable 
    ^comment/#space asParser 

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

cevap

6

Neden olmaz aşağıdaki açıklama ayrıştırıcı çalışmaları yanı?

'//' asParser , #newline asParser negate star 

Ayrıca (dilbilgisi izin verirse) bu konuda her zaman düşünmek zorunda kalmamak için, trim: ile boşluk ayrıştırma içine yorumların ayrıştırmayı eklemek isteyebilirsiniz.

İlgili konular