m4スレ

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん:05/01/15 22:39:11
なぜかm4のスレがなかったので立てます。

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

m4紹介ページ
http://homepage1.nifty.com/bmonkey/doc/m4-1.4/html/m4-ja.html
2デフォルトの名無しさん:05/01/15 22:51:11
とりあえず2げっと
3デフォルトの名無しさん:05/01/15 22:57:12
ある意味LISPっぽいよねこれ。
むしろS式を必要としないLISPか。
4デフォルトの名無しさん:05/01/15 23:04:29
sendmailとautoconfが有名だね。
5Rubyist!:05/01/16 00:18:05
正直あまり楽しくない。
6デフォルトの名無しさん:05/01/16 00:20:41
>>5
同意

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

どうせ読み辛いなら S 式 or XML で良いよ。
9デフォルトの名無しさん:05/01/16 02:34:04
>>6
同意
m4なんて早く消えてSchemeでいいよね
10デフォルトの名無しさん:05/01/16 09:55:43
m4(^Д^)プギャー
11デフォルトの名無しさん:05/01/16 10:22:11
やれやれ、道具の使い分けというものを知らない厨房ばかりだな。
12デフォルトの名無しさん:05/01/16 11:40:50
>>11
>やれやれ、道具の使い分けというものを知らない厨房ばかりだな。

Lisper という人種は「道具の使い分け」等という
迷信を抱いたりはしないのだよ。
13デフォルトの名無しさん:05/01/16 14:12:36
COBOLer の間違いでは?
14デフォルトの名無しさん:05/01/16 16:34:11
>>12
だから世間では奇人変人扱いされるわけだ。
15デフォルトの名無しさん:05/01/16 16:54:48
世間は Lisp も m4 も知らないだろう。

XML の XSLT とか Lisp の defmacro みたいにプリプロセスする対象と
親和性が高くないと使い辛いと思う。
16デフォルトの名無しさん:05/01/20 18:41:52
M4の謎が解けました
いままで
17デフォルトの名無しさん: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と一致するはずよね?
18デフォルトの名無しさん:05/03/10 08:41:44
それをメンテする人間が君だけならその方法でよいと思うよ。
19デフォルトの名無しさん:05/03/10 21:59:07
>>17
よいアイデアだと思ってるのかもしれないけど、
パスを増やすとそれだけデバッグが困難になると思うよ。
しかもプリプロセッサだとほとんど場合意味まで解釈しないから、
ミスをそのまま通す可能性が高い。

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

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

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

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

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


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

この辺やらないと使い物にならない
2825
もちろん文字列の中に  /*%%・・・ と入れたらダメだけど まずやらないでしょ?

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