2013-02-12 5 views
10

これよりも1行コメントを解析する簡単な方法はありますか?PharoのPetitParserでコメントを解析する

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:と空白構文解析へのコメントの解析を含めることができます。

関連する問題