2011-09-07 3 views

答えて

2

を働くだろう実際にコメントを開始します。行が文字列リテラル内部のハッシュを持っていたか、それ自体が一例

%w# abc def # 

ため、%wで区切り文字として使用されたか、この

dog = "spike" 
%w{#dog rat} 

ようなものに使用されたなら、あなたは困難を持っています正規表現を出そうとしています。私はルビーパーザーと一緒に行くだろう。

+0

私はruby synax parserを使ってこのようなことをする必要があります。私はルビーの難読化装置を書いています。 – qichunren

+0

確かに。文法リテラルと '%w {}'フォームのような多くの異なる文脈でハッシュ記号が現れることがわかっているので、文法パーサだけがコメントを削除する唯一の信頼できる方法だと思います正規表現は一般的には十分に強力です(ただし、多少の努力を要するかもしれませんが)。しかし、あなたが難読化ツールを書いているという事実は、パーサーの完全な力を間違いなく望んでいることを意味し、多種多様な変換を実行できます。これらの変換**は、(線形の)Rubyテキストではなく、抽象構文ツリーで行う必要があります。 –

-1

/# comments/はあなたが

/#[^#]*$/ 

を使用することができます最後ハッシュた後で、すべての任意のテキストを一致させたいが、保証は最後のハッシュはありませんした非現実的な場合を想定すると、細かい

関連する問題