challenge コメントの削除

ソースコードからコメント部分を削除するプログラム decomment を書いてください.
すくなくとも,decomment を記述したのと同じ言語で書かれているソースコードが
扱えるようにしてください.



Posted feedbacks - Smalltalk

Squeak Smalltalk で。

与えられた Smalltalk コードを抽象構文木に落とし、それに含まれるコメントノードを削除してから文字列に戻して出力しました(実際は、抽象構文木の初回出力時にそこからコメントノードが削除される副作用を流用)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
| decomment |
decomment := [:sourceStr |
    | dummySel tree |
    dummySel := 'dummy '.
    tree := Parser new
        parse: (dummySel, sourceStr) readStream
        class: UndefinedObject
        noPattern: false
        context: nil
        notifying: nil
        ifFail: [^nil]. 
    (tree printString; printString) allButFirst: dummySel size].

^decomment value: '"comment1" ^ self "comment2"'   "=> '    ^ self' "

Index

Feed

Other

Link

Pathtraq

loading...