Next: Macro Arguments, Previous: Invocation, Up: Macros [Contents][Index]
Àè¹Ô¤¹¤ë¥Þ¥¯¥í¥×¥í¥»¥Ã¥µ(Stratchey¤ÎGPM
¤Ê¤É)¤ËÈæ¤Ù¤Æ¡¢
m4
¸À¸ì¤Î³×¿·Åª¤Ê¤È¤³¤í¤Ï¡¢
ÀèÆ¬¤ËÆÃÊ̤Êʸ»ú¤ò¤Ä¤±¤Æ½ñ¤¯¤È¤¤¤Ã¤¿¤³¤È¤ò¤·¤Ê¤¯¤Æ¤â¡¢¥Þ¥¯¥í¤Î¸Æ¤Ó½Ð¤·¤ò¼±Ê̤Ǥ¤ëǽÎϤǤ¹¡£
¤³¤Îµ¡Ç½¤Ï¿¤¯¤Î¾ì¹ç¤Ë¤ª¤¤¤ÆÊØÍø¤Ê¤Î¤Ç¤¹¤¬¡¢
¤È¤¤Ë¤ÏÉÔɬÍפʥޥ¯¥í¤Î¸Æ¤Ó½Ð¤·¤Î¸¶°ø¤È¤Ê¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
¤½¤³¤Ç¡¢GNU m4
¤Ë¤Ï̾Á°¡Êname¡Ë¤¬¥Þ¥¯¥í¤Î¸Æ¤Ó½Ð¤·¤È¤·¤ÆÇ§¼±¤µ¤ì¤ë¤Î¤ò
ÍÞÀ©¤¹¤ë¤¤¤¯¤Ä¤«¤Îµ¡¹½¤ä¥Æ¥¯¥Ë¥Ã¥¯¤¬¤¢¤ê¤Þ¤¹¡£
¤Þ¤º¡¢Â¿¤¯¤ÎÁȤ߹þ¤ß¥Þ¥¯¥í¤Ï°ú¿ô¤Ê¤·¤Ç¸Æ¤Ó½Ð¤·¤Æ¤â°ÕÌ£¤¬¤Ê¤¤¤Î¤Ç¡¢ ¤½¤ì¤é¤Î̾Á°¤Îľ¸å¤Ë³«¤¥«¥Ã¥³¤¬¤Ê¤¤¤È¤¤Ï¡¢ÁȤ߹þ¤ß¥Þ¥¯¥í¤Ï¸Æ¤Ó½Ð¤µ¤ì¤Þ¤»¤ó¡£ ¤³¤ì¤Ë¤è¤Ã¤Æ¡¢‘include’¤ä‘eval’¤¬¥Þ¥¯¥í¤È¤·¤ÆÇ§¼±¤µ¤ì¤Æ¤·¤Þ¤¦ ¤È¤¤¤Ã¤¿¤è¤¯¤¢¤ë¥±¡¼¥¹¤ËÂнè¤Ç¤¤Þ¤¹¡£ ¸å¤Û¤É¡¢¤³¤Îʸ½ñ¤Ë½Ð¤Æ¤¯¤ë “¤³¤Î¥Þ¥¯¥í¤Ï°ú¿ô¤òÍ¿¤¨¤¿¤È¤¤À¤±Ç§¼±¤µ¤ì¤Þ¤¹”¤È¤¤¤¦Ê¸¤Ï¡¢ ¤³¤Îưºî¤ò°ÕÌ£¤·¤Þ¤¹¡£
¤Þ¤¿¡¢¥³¥Þ¥ó¥É¥ª¥×¥·¥ç¥ó(--prefix-builtins
, ¤Þ¤¿¤Ï-P
)
¤ò»È¤¦¤È¡¢ÁȤ߹þ¤ß¥Þ¥¯¥í¤ò¸Æ¤Ó½Ð¤¹¤È¤¤Ï¡¢
¤½¤Î̾Á°¤ÎÀèÆ¬¤Ë‘m4_’¤ò¤Ä¤±¤Ê¤±¤ì¤Ðǧ¼±¤µ¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
¤¿¤È¤¨¤Ðm4_dnl
¤ä¡¢¤µ¤é¤Ë¤Ïm4_m4exit
¤È
½ñ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
¤Á¤Ê¤ß¤Ë¡¢¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¥æ¡¼¥¶ÄêµÁ¤Î¥Þ¥¯¥í¤Ë¤Ï²¿¤Î¸ú²Ì¤â¤â¤Á¤Þ¤»¤ó¡£
changeword
µ¡Ç½¤¬¥³¥ó¥Ñ¥¤¥ë»þ¤ËÁȤ߹þ¤Þ¤ì¤¿m4
¤ò
»ÈÍѤ·¤Æ¤¤¤ë¤È¤¤Ï¡¢¥Þ¥¯¥í̾¤Îǧ¼±¤Ë»È¤ï¤ì¤ë»ú¶ç¹½À®µ¬Â§¤ò¤Ï¤ë¤«¤Ë½ÀÆð¤Ë
»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤³¤Îµ¬Â§¤ÏÁȤ߹þ¤ß¥Þ¥¯¥í¤È¥æ¡¼¥¶ÄêµÁ¥Þ¥¯¥íξÊý¤Î̾Á°¤ËºîÍѤ·¤Þ¤¹¡£
¤³¤Î»î¸³Åª¤Êµ¡Ç½¤Î¾ÜºÙ¤ÏSee Changeword¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤â¤Á¤í¤ó¡¢¤¢¤ë̾Á°¤¬¥Þ¥¯¥í¤Î¸Æ¤Ó½Ð¤·¤È¤·¤ÆÇ§¼±¤µ¤ì¤ë¤Î¤òËɤ°¡¢ ¤â¤Ã¤È¤âñ½ã¤ÊÊýË¡¤Ï¡¢¤½¤Î̾Á°¤ò¥¯¥©¡¼¥È¤¹¤ë(°úÍÑÉä¤Ç°Ï¤à)¤³¤È¤Ç¤¹¡£ ¤³¤ÎÀá¤Î»Ä¤êÉôʬ¤Ç¤Ï¡¢¥¯¥©¡¼¥È¤¹¤ë¤³¤È¤¬¥Þ¥¯¥í¤Î¸Æ¤Ó½Ð¤·¤Ë¤É¤Î¤è¤¦¤Ë ±Æ¶Á¤¹¤ë¤Î¤«¡¢¤Þ¤¿¥Þ¥¯¥í¤Î¸Æ¤Ó½Ð¤·¤òÍÞÀ©¤¹¤ë¤Ë¤Ï ¤½¤ì¤ò¤É¤Î¤è¤¦¤Ë»È¤¨¤Ð¤è¤¤¤Î¤«¤ò¡¢¤â¤¦¤¹¤³¤·¾Ü¤·¤¯¸«¤Æ¤¤¤¤Þ¤¹¡£
¥Þ¥¯¥í¤Î¸Æ¤Ó½Ð¤·¤òÍÞÀ©¤·¤¿¤¤¤È¤¤Ï̾Á°Á´ÂΤò¥¯¥©¡¼¥È¤¹¤ë¤Î¤¬ÉáÄ̤Ǥ¹¤¬¡¢ ̾Á°¤Î¿ôʸ»ú¤ò¥¯¥©¡¼¥È¤¹¤ë¤À¤±¤Ç¤âƱ¤¸¸ú²Ì¤¬¤¢¤ê¤Þ¤¹¡£ ¤Þ¤¿¡¢¶õʸ»úÎó¤ò¥¯¥©¡¼¥È¤¹¤ë¤À¤±¤Ç¤â¤è¤¤¤Î¤Ç¤¹¤¬¡¢ ¤³¤Î¾ì¹ç¤Ï̾Á°¤ÎÆâÉô¤Ç¤Ê¤¤¤È¸ú²Ì¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢
`divert' `d'ivert di`ver't div`'ert
¤³¤ì¤é¤Î·ë²Ì¤Ï¤¹¤Ù¤ÆÊ¸»úÎó‘divert’¤È¤Ê¤ê¤Þ¤¹¤¬¡¢
`'divert divert`'
¤³¤Á¤é¤ÏξÊý¤È¤âÁȤ߹þ¤ß¥Þ¥¯¥ídivert
¤¬¸Æ¤Ð¤ì¤Þ¤¹¡£
¥Þ¥¯¥í¤òɾ²Á¤·¤ÆÀ¸¤¸¤¿½ÐÎϤϾï¤ËºÆÁöºº¡Êrescan¡Ë¤µ¤ì¤Þ¤¹¡£
¼¡¤ÎÎã¤Ç¤Ï¡¢m4
¤Ë‘substr(abcde, 3, 2)’¤òÆþÎϤȤ·¤Æ
Í¿¤¨¤¿¤È¤¤ÈƱÍͤˡ¢Ê¸»úÎó‘de’¤¬À¸À®¤µ¤ì¤Þ¤¹¡£
define(`x', `substr(ab') define(`y', `cde, 3, 2)') x`'y
¥¯¥©¡¼¥È¤µ¤ì¤¿Ê¸»úÎó¡Êquoted string¡Ë¤Îξü¤Ë¤¢¤ë¥¯¥©¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤Ê¸»úÎó¤Ï¡¢
¥Þ¥¯¥í̾¤È¤·¤ÆÇ§¼±¤µ¤ì¤ëÂоݤȤʤê¤Þ¤¹¡£
¼¡¤ÎÎã¤Ç¤Ï¡¢¶õʸ»úÎó¤ò¥¯¥©¡¼¥È¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ
dnl
¥Þ¥¯¥í¤¬Ç§¼±¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
define(`macro', `di$1') macro(v)`'dnl
¤â¤·°úÍÑÉ䤬¤Ê¤«¤Ã¤¿¤é¡¢ ʸ»úÎó‘divdnl’¤È¤½¤ì¤Ë³¤¯²þ¹Ôʸ»ú¤¬À¸À®¤µ¤ì¤ë¤À¤±¤Ç¤·¤ç¤¦¡£
¥¯¥©¡¼¥È¤¹¤ë¤³¤È¤Ç¡¢¥Þ¥¯¥íŸ³«¤Ë¤è¤ëʸ»úÎó¤È¤½¤Î¼þ°Ï¤Îʸ»ú¤òÏ¢·ë¤·¤¿¤â¤Î¤¬ ¥Þ¥¯¥í¤Î̾Á°¤È¤·¤ÆÇ§¼±¤µ¤ì¤ë¤Î¤òËɤ°¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
define(`macro', `di$1') macro(v)`ert'
¤³¤ÎÆþÎϤ«¤é¤Ï¡¢Ê¸»úÎó‘divert’¤¬À¸¤ß½Ð¤µ¤ì¤Þ¤¹¡£
¤â¤·°úÍÑÉ䤬¤Ê¤±¤ì¤Ð¡¢ÁȤ߹þ¤ß¥Þ¥¯¥ídivert
¤¬¸Æ¤Ó¤À¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£