2017-11-07 10 views
0

m4でプログラムファイル(実際にはアセンブラ)を処理します。 私は今、私だけではなく、 それらを抑制するアセンブラコメントに行を変更したいm4で各行にプレフィックスを追加するには

changequote({,})dnl 
define({_SUPPRESSED},)dnl 
_SUPPRESSED({ 
jan 
piet 
}) 

を使用して行を抑制することができます

; jan 
; piet 

はM4例えばで可能ということですpatsubstを使って? どうすればできますか?

注: 多くの実験にもかかわらず、私は管理しませんでした。例えば。以下が失敗する。

define({pie}, {patsubst($1,{\n},{\n;})}) 

答えて

1
define(`pie',`patsubst(`$1',`^.*$',`; &')') 
pie(`jan 
piet') 

注意(pieの定義における)patsubst周りの文字列の区切り文字!それがなければm4patsubstを(読んでいない)pieの定義で展開します。デリミタを使用すると、文字列になり、pieマクロを呼び出すときにのみ展開されます。

もちろん、{}を文字列区切り文字として使用できます。

+1

これは機能しましたが、すべての行を ";&"に置き換えます。私のオリジナルでは "\ n"を "^"に置き換えると、すべての行が意図したとおりにコメントに変換されます。 $ 1前後の引用符も重要です。それ以外の場合は、コメント行にコンマの「、」を入れることはできません。 –

+0

はい、 "^"の置き換えは簡単です:) – uzsolt

関連する問題