2013-02-12 6 views
10

में पेटिटपार्सर के साथ टिप्पणियां पार्सिंग क्या इस से 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 के बारे में विशेष रूप से अनिश्चित हूँ :.

लुकास 'जवाब के बाद मुझे बहुत सरल निम्नलिखित समाधान के साथ आया था:

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

programEntity 
    ^instruction trim: ignorable 

ignorable 
    ^comment/#space asParser 

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

उत्तर

6

क्यों होगा के रूप में अच्छी तरह से निम्नलिखित टिप्पणी पार्सर काम नहीं कर रहा?

'//' asParser , #newline asParser negate star 

इसके अलावा, आप टिप्पणियों के पार्स, तो आप इसके बारे में हर समय लगता है की जरूरत नहीं है trim: साथ खाली स्थान के पार्स में शामिल करने के लिए (व्याकरण यह अनुमति दे) चाहते हो सकता है।

संबंधित मुद्दे

 संबंधित मुद्दे