トップページ⇒tech
28コメント6KB

m4スレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
なぜかm4のスレがなかったので立てます。

m4とは古来から現在まで色んな言語のプリプロセスに使われている
マクロプロセッサである。

m4紹介ページ
http://homepage1.nifty.com/bmonkey/doc/m4-1.4/html/m4-ja.html
0002デフォルトの名無しさんNGNG
とりあえず2げっと
0003デフォルトの名無しさんNGNG
ある意味LISPっぽいよねこれ。
むしろS式を必要としないLISPか。
0004デフォルトの名無しさんNGNG
sendmailとautoconfが有名だね。
0005Rubyist!NGNG
正直あまり楽しくない。
0006デフォルトの名無しさんNGNG
>>5
同意

はやく廃れて欲しい言語だねw
0007デフォルトの名無しさんNGNG
各種設定ファイル等のプリプロセスに使える手軽なプリプロセサが
ほかにあればm4捨ててもいいけど。cppは貧弱すぎるし、
Rubyやらなんやらのスクリプト言語はプリプロセス向きではない。
0008デフォルトの名無しさんNGNG
ttp://www.nurs.or.jp/~sug/soft/super/m4.htm

どうせ読み辛いなら S 式 or XML で良いよ。
0009デフォルトの名無しさんNGNG
>>6
同意
m4なんて早く消えてSchemeでいいよね
0010デフォルトの名無しさんNGNG
m4(^Д^)プギャー
0011デフォルトの名無しさんNGNG
やれやれ、道具の使い分けというものを知らない厨房ばかりだな。
0012デフォルトの名無しさんNGNG
>>11
>やれやれ、道具の使い分けというものを知らない厨房ばかりだな。

Lisper という人種は「道具の使い分け」等という
迷信を抱いたりはしないのだよ。
0013デフォルトの名無しさんNGNG
COBOLer の間違いでは?
0014デフォルトの名無しさんNGNG
>>12
だから世間では奇人変人扱いされるわけだ。
0015デフォルトの名無しさんNGNG
世間は Lisp も m4 も知らないだろう。

XML の XSLT とか Lisp の defmacro みたいにプリプロセスする対象と
親和性が高くないと使い辛いと思う。
0016デフォルトの名無しさん05/01/20 18:41:52
M4の謎が解けました
いままで
0017デフォルトの名無しさん05/03/10 08:36:07
m4のためのプリプロセスm4pp作ってm4臭さを消したらええんやないの?

例えばPascalで
 m4pp < m4pp.pa | m4 > m4pp.pas

最初はm4pp.pasを対象とする言語で書いて、安定したらm4pp.paに手で書き替えてm4pp.pasを上のように作る。
で、新しいm4pp.pasから作ったm4ppでm4pp.paからm4pp.pasを作ると一つ前のm4pp.pasと一致するはずよね?
0018デフォルトの名無しさん05/03/10 08:41:44
それをメンテする人間が君だけならその方法でよいと思うよ。
0019デフォルトの名無しさん05/03/10 21:59:07
>>17
よいアイデアだと思ってるのかもしれないけど、
パスを増やすとそれだけデバッグが困難になると思うよ。
しかもプリプロセッサだとほとんど場合意味まで解釈しないから、
ミスをそのまま通す可能性が高い。

>>17の場合 意図した結果になってるかどうかを
最悪m4pp、m4、m4pp.pasの3箇所で調べないとね。
トランスレーターが流行らない理由の1つ。
00201705/03/11 00:09:40
あるスクリプトが
・手続きしかない。
・組み込み手続きは引き数がある。
・ユーザー定義手続きは引き数を持てない。
・ソースファイルの分割が出来ない。
という問題があってなんとかあっさり拡張出来ないかなと思ってましたが諦めます。
0021デフォルトの名無しさん2005/03/26(土) 21:55:03
このスレの流れが止まった件について
0022デフォルトの名無しさん2005/04/14(木) 21:08:12
立てた俺が他の事やってるからな・・
0023デフォルトの名無しさん2005/04/15(金) 00:12:18
>>22
立てた以上、責任持ってネタふれや
0024デフォルトの名無しさん2005/04/15(金) 06:08:40
http://www014.upp.so-net.ne.jp/tetryl/llw2004/ll-samurai.txt
0025デフォルトの名無しさん2005/04/15(金) 07:45:47
俺ね、汎用プリプロセスマクロが欲しくてM4触ったけど、使い辛い。
やっぱり中間出力ってのがマズイ原因なんだよ。

で、結局自作のもっと簡単なマクロ作った。
どういうものかというと、マクロをコメント部に書いておいて、
出力はソースそのものを書き換えるというもの。

エディタから呼び出すと、即座に反映されて便利なんよ。

ただし、ミスするとソースが一気に崩れる諸刃の剣
まあ慣れればそんな失敗はしなくなるんで、慣れれば最強だよ。
0026252005/04/15(金) 07:54:45
たとえば include をどう処理するか。

/*%%Include "FILE.INC" ;*/
  ・・・ここの間がFILE.INCにマクロを処理しながら書換えられる・・・
/*%%IncludeEnd ;*/


0027デフォルトの名無しさん2005/09/04(日) 19:17:53
コメントかどうか
文字列の中かどうか

この辺やらないと使い物にならない
0028252005/09/08(木) 07:37:19
もちろん文字列の中に  /*%%・・・ と入れたらダメだけど まずやらないでしょ?

それに >>26の例はC言語なんだけど
ほとんどアセンブラで使う目的なんで そんなに厳密でなくていいんだよ。

■ このスレッドは過去ログ倉庫に格納されています