ÀÌ ÀåÀº ¸ÅÅ©·ÎÀÇ ±âº»ÀûÀÎ »ç¿ë¹ý°ú ¸ÅÅ©·Î¿¡¼ ÀÎÀÚ¸¦ ³Ñ°ÜÁÖ´Â ¹æ¹ý°ú ¸ÅÅ©·Î°¡ ¾î¶»°Ô Ãë±ÞµÇ´ÂÁö¸¦ ¼³¸íÇÑ´Ù.
¸ÅÅ©·Î¸¦ ºÒ·¯³¾ ¶§¿¡´Â ¾Æ·¡¿Í °°ÀÌ ÇÑ´Ù.
name
ÀÌ°ÍÀº ¾Æ¹«·± ÀÎÀÚµµ ¾øÀÌ ¸ÅÅ©·Î¸¦ ºÒ·¯³»´Â °ÍÀÌ´Ù. ¶Ç´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
name(arg1, arg2, ..., argn)
ÀÌ°ÍÀº n°³ÀÇ ÀÎÀÚ·Î ¸ÅÅ©·Î¸¦ ºÒ·¯³»´Â °ÍÀÌ´Ù. ¸ÅÅ©·ÎÀÇ ÀÎÀÚÀÇ °¹¼ö¿¡´Â Á¦ÇÑÀÌ ¾ø´Ù. ¸ðµç ÀÎÀÚ´Â ¹®ÀÚ¿ÀÌ´Ù. ±×·¯³ª ´Ù¸¥ ¸ÅÅ©·Î´Â ÀÎÀÚ¸¦ ³ª¸§´ë·ÎÀÇ ¹æ½ÄÀ¸·Î Çؼ®ÇÒ ¼ö ÀÖ´Ù.
¹Ýµå½Ã ¿ÞÂÊ °ýÈ£´Â name ´ÙÀ½¿¡ °ø¹é¾øÀÌ ¹Ù·Î ³ª¿Í¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¸ÅÅ©·Î´Â ÇϳªÀÇ ÀÎÀÚµµ ¾ø´Â ä È£ÃâµÈ´Ù.
¸ÅÅ©·Î¸¦ Çϳªµµ ¾ø´Â ä È£ÃâÀ» ÇÑ´Ù¸é, ¹Ýµå½Ã °ýÈ£´Â ¾ø¾î¾ß ÇÑ´Ù. ´ÙÀ½ ¸ÅÅ©·Î È£Ãâ
name()
Àº ÇϳªÀÇ ÀÎÀÚ¸¦ °¡Áø´Ù. ±×°ÍÀº ºó ¹®ÀÚ¿À̸ç, ÀÎÀÚ ¾ø´Â È£ÃâÀÌ ¾Æ´Ï´Ù.
m4
ÀÌ ±× Á¶»óµéº¸´Ù (¿¹¸¦ µé¾î, StratcheyÀÇ GPM
°ú °°Àº)
¶Ù¾î³ Á¡ Áß ÇÑ°¡Áö´Â ¸ÅÅ©·Î·Î È®ÀåÇÑ °ÍÀ» ´Ù½Ã È®ÀåÇÑ´Ù´Â °ÍÀÌ´Ù.
ÀÌ°ÍÀº ¾î¶² È£ÃâÀ» ÀǹÌÇÏ´Â Á¢µÎ¾î °°Àº °ÍÀÌ ¾øÀ̵µ, Ưº°ÇÑ ÀçÁ¤·ÄÀÌ
¾øÀ̵µ ´Ù½Ã ¸ÅÅ©·Î¸¦ ÀνÄÇÑ´Ù´Â Á¡ÀÌ´Ù. ÀÌ°ÍÀº À¯¿ëÇÑ ¹Ý¸é ¹®Á¦ÀÇ
¿øõÀÌ µÇ±âµµ ÇÑ´Ù. ¿øÄ¡ ¾Ê´Â ¸ÅÅ©·Î È£ÃâÀ» ÆÄ»ýÇÒ ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù.
µû¶ó¼ GNU m4
´Â ¸íĪÀ» ¸ÅÅ©·Î È£Ãâ·Î ÀνÄÇÏ´Â °ÍÀ» ¾ïÁ¦ÇÏ´Â
¿©·¯ °¡ÁöÀÇ ¸ÞÄ«´ÏÁò°ú Å×Å©´ÐÀ» Á¦°øÇÑ´Ù.
±× ù ¹ø°·Î, ¸¹Àº ³»Àå ¸ÅÅ©·ÎµéÀº ÀÎÀÚ°¡ ¾øÀ̴ ȣÃâÇÒ ¼ö ¾ø´Ù. ÀÌ·¯ÇÑ ³»Àå ¸ÅÅ©·ÎµéÀº ¸íĪ ´ÙÀ½¿¡ ¿©´Â °ýÈ£°¡ ¹Ù·Î µû¶ó¿ÀÁö ¾Ê´Â´Ù¸é È£ÃâµÇÁö ¾Ê´Â´Ù. ÀÌ°ÍÀº °ÅÀÇ ´ëºÎºÐÀÇ °æ¿ì¿¡ ¹®Á¦ÀÇ ÇØ°áÃ¥ÀÌ µÈ´Ù. `include'³ª `eval'°°Àº °æ¿ì°¡ ´ëÇ¥ÀûÀÎ ¿¹ÀÌ´Ù. ÀÌ ¹®¼ÀÇ ÈĹݺο¡ "ÀÌ ¸ÅÅ©·Î´Â ÀÎÀÚ°¡ ÀÖÀ» ¶§¿¡¸¸ ÀνĵȴÙ"´Â ¹ß¾ðÀº ÀÌ·± °ÍÀ» ¿°µÎ¿¡ µÐ °ÍÀÌ´Ù.
ÀÌ·¯ÇÑ ÀÛ¾÷À» µµ¿ÍÁÖ´Â ¸í·ÉÇà È£Ã⠿ɼÇ(--prefix-builtins
, ¶Ç´Â
-P
)ÀÌ ÀÖ´Ù. ÀÌ°ÍÀº ³»Àå ¸ÅÅ©·Î¸¦ È£ÃâÇÒ ¶§ `m4_'¸¦ ¾Õ¿¡ ºÙÀ̵µ·Ï
ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¿É¼ÇÀº »ç¿ëÀÚ ¸ÅÅ©·Î¿¡´Â ÀüÇô ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù.
¿¹¸¦ µé¸é m4_dnl
°ú °°ÀÌ ½ÉÁö¾î´Â m4_m4exit
°ú °°ÀÌ Àû¾î¾ß ÇÑ´Ù´Â
À̾߱âÀÌ´Ù.
µ¶ÀÚ°¡ °¡Áö°í ÀÖ´Â GNU m4
°¡ changeword
±â´ÉÀ» ÄÄÆÄÀÏÇÏ¿© °¡Áö°í
ÀÖ´Ù¸é, ÀÌ°ÍÀº ³»Àå ¸ÅÅ©·Î¿Í »ç¿ëÀÚ Á¤ÀÇ ¸ÅÅ©·Î¿¡ °øÈ÷ ¸ÅÅ©·Î ¸íĪÀÇ
¹®¹ý¿¡ ´õ ¸¹Àº À¯¿¬¼ºÀ» Á¦°øÇÑ´Ù. ÀÌ·¯ÇÑ ½ÃÇèÀûÀΠƯ¡¿¡ ´ëÇØ ÀÚ¼¼È÷
¾Ë°í ½ÍÀ¸¸é See section ´Ü¾îÀÇ ¾îÈÖ ±¸Á¶ ¹Ù²Ù±â.
¹°·Ð, ÇϳªÀÇ ¸íĪÀ» Á¸ÀçÇÏ´Â ¸ÅÅ©·Î¸¦ È£ÃâÇÏ´Â °ÍÀ¸·Î Çؼ®ÇÏ´Â °ÍÀ» ¾ïÁ¦ÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº ±×°ÍÀ» µû¿ÈÇ¥·Î ¹¾î ¹ö¸®´Â °ÍÀÌ´Ù. ÀÌ ÀåÀÇ ÈĹݺο¡¼ µû¿ÈÇ¥·Î µÑ·¯½Î´Â °ÍÀÌ ¸ÅÅ©·Î È£Ãâ¿¡ ¹ÌÄ¡´Â ¿µÇâ¿¡ ´ëÇØ Á» ´õ ±í°Ô ¾Ë¾Æº¸°í ¸ÅÅ©·Î È£ÃâÀ» ¾ïÁ¦ÇÏ´Â µ¥ µû¿ÈÇ¥·Î ¹´Â ¹æ¹ýÀÌ ¾î¶»°Ô »ç¿ëµÉ ¼ö ÀÖ´ÂÁö¸¦ ¼³¸íÇÑ´Ù.
º¸ÅëÀº ¸ÅÅ©·Î Àüü ¸íĪÀ» µû¿ÈÇ¥·Î ¹À» ¼öµµ ÀÖÁö¸¸, ¸íĪÀÇ ÀϺκи¸À» ¹´Â °æ¿ìµµ ÀÖ´Ù. ºó ¹®ÀÚ¿À» µû¿ÈÇ¥·Î ¹´Â °Íµµ °¡´ÉÇÏÁö¸¸, ¸íĪÀÇ ³»ºÎ¿¡¼¸¸ ÀÛµ¿ÇÑ´Ù. ¿¹¸¦ µé¸é,
`divert' `d'ivert di`ver't div`'ert
¸ðµÎ´Ù ¹®ÀÚ¿ `divert'¸¦ ÀǹÌÇÑ´Ù. ´ÙÀ½ÀÇ µÎ °³´Â,
`'divert divert`'
³»Àå ¸ÅÅ©·Î divert
¸¦ È£ÃâÇÒ °ÍÀÌ´Ù.
Ãâ·ÂµÇ´Â ¸ÅÅ©·Î È®ÀåÀº ´Ù½Ã Àç°Ë»öµÈ´Ù. ´ÙÀ½ÀÇ ¿¹´Â ¹®ÀÚ¿ `de'°¡ µÉ
°ÍÀÌ´Ù. ¸¶Ä¡ m4
¿¡ ÀÔ·ÂÀ¸·Î `substr(abcde, 3, 2)'°¡ µé¾î ¿Ã
¶§¿¡ µÇ´Â °Í°ú Á¤È®È÷ ¶È°°´Ù.
define(`x', `substr(ab') define(`y', `cde, 3, 2)') x`'y
µû¿ÈÇ¥ ó¸®µÈ ¹®ÀÚ¿ÀÇ ¾ÕÀÌµç µÚÀÌµç ¾î´À ÂÊÀ̵çÁö¿¡ ÀÖ´Â µû¿ÈÇ¥°¡ ¾ø´Â
¹®ÀÚ¿Àº ¸ÅÅ©·Î ¸íĪÀ¸·Î ÀÎ½ÄµÉ ¼ö ÀÖ´Ù. ¾Æ·¡ÀÇ ¿¹¿¡¼ ºó ¹®ÀÚ¿À» µû¿ÈÇ¥·Î
µÑ·¯½Î´Â °ÍÀº dnl
¸ÅÅ©·Î¸¦ Á¦´ë·Î ÀνÄÇϵµ·Ï ¸¸µç´Ù.
define(`macro', `di$1') macro(v)`'dnl
µû¿ÈÇ¥°¡ ¾ø´Ù¸é, ¹®ÀÚ¿ `divdnl'°ú ±× µÚ¿¡ ÁÙ¹Ù²Þ ¹®ÀÚ°¡ µÚ¿¡ ºÙ¿©Áø °ÍÀÌ µÉ °ÍÀÌ´Ù.
µû¿ÈÇ¥·Î ¹´Â °ÍÀº, ¸ÅÅ©·Î È®ÀåÀÇ °á°ú°¡ ±× ÁÖÀ§ÀÇ ¹®ÀÚµé°ú °áÇյǾî Ã˹ߵǴÂ, ¸ÅÅ©·Î À̸§À¸·ÎÀÇ ¿¬¼âÀûÀÎ ÀνÄÀ» ¸·À» ¼ö ÀÖ´Ù. ´ÙÀ½Àº ±× ¿¹ÀÌ´Ù.
define(`macro', `di$1') macro(v)`ert'
ÀÔ·ÂÀº ¹®ÀÚ¿ divert
¸¦ »ý¼ºÇÒ °ÍÀÌ´Ù. µû¿ÈÇ¥°¡ ¾ø´Ù¸é
divert
¶ó´Â ³»Àå ¸ÅÅ©·Î°¡ È£ÃâµÈ´Ù.
¾î¶² ¸íĪÀÌ ¹ß°ßµÇ¾úÀ» ¶§, ±×°ÍÀÌ ¸ÅÅ©·Î·Î¼ Á¤ÀÇµÈ °ÍÀ̶ó¸é, ±×°ÍÀº ¸ÅÅ©·Î·Î È®ÀåµÈ´Ù.
¸íĪµÚ¿¡ ¿©´Â °ýÈ£°¡ µû¶ó¿À¸é, ÀÎÀÚ´Â ¸ÅÅ©·Î¸¦ È£ÃâÇϱâ Àü¿¡ ¼öÁýµÇ´Â ´Ü°è¸¦ °ÅÄ£´Ù. ³Ê¹« ÀûÀº ¼öÀÇ ÀÎÀÚ¹Û¿¡ ÁÖ¾îÁöÁö ¾Ê¾Ò´Ù¸é ÁÖ¾îÁöÁö ¾Ê¾Ò´ø ÀÎÀÚ´Â ºó ¹®ÀÚ¿·Î Á¤ÇØÁö°í, ³Ê¹« ¸¹Àº ¼öÀÇ ÀÎÀÚ°¡ ÁÖ¾îÁ³´Ù¸é ÃÊ°úµÈ ¸¸ÅÀÇ ÀÎÀÚ´Â ¹«½ÃµÈ´Ù.
º¸Åë m4
´Â ÀûÇÕÇÏÁö ¾ÊÀº ¼öÀÇ ÀÎÀÚ¸¦ ¹ÞÀ¸¸é¼ ³»Àå(builtin) ¸ÅÅ©·Î°¡
È£ÃâµÉ ¶§¿¡´Â °æ°í¸¦ ³»º¸³½´Ù. ÀÌ·¯ÇÑ °æ°í´Â `-Q' ¸í·ÉÇà ¿É¼ÇÀ¸·Î
ÀáÀç¿ï ¼ö ÀÖ´Ù. »ç¿ëÀÚ°¡ Á¤ÀÇÇÑ ¸ÅÅ©·Î¿¡¼´Â ÁÖ¾îÁø ÀÎÀÚÀÇ ¼ö¸¦
Á¡°ËÇØ º¸Áö ¾Ê´Â´Ù.
¸ÅÅ©·Î´Â º¸Åë ÀÎÀÚ¸¦ ¼öÁýÇÏ´Â ´Ü°è¿¡¼ È®ÀåµÇ°í, ±× °á°ú·Î È®ÀåµÈ ÅؽºÆ®¿¡ ³ªÅ¸³ª´Â ÄÞ¸¶³ª µû¿ÈÇ¥, °ýÈ£´Â ±× ¿ª½Ã ÀÎÀÚ¸¦ Á¤ÀÇÇÏ´Â µ¥¿¡ »ç¿ëµÈ´Ù. ±×·¡¼ foo°¡ `, b, c'·Î È®ÀåµÈ´Ù°í ÇÒ ¶§¿¡, ´ÙÀ½ÀÇ ¸ÅÅ©·Î È£ÃâÀº
bar(a foo, d)
4°³ÀÇ ÀÎÀÚ¸¦ °¡Áö´Â °ÍÀÌ´Ù. ±×°ÍÀº `a ', `b', `c', `d'°¡ µÈ´Ù. ù¹ø° ÀÎÀÚ°¡ °ø¹éÀ» Æ÷ÇÔÇÏ°Ô µÇ´Â ÀÌÀ¯¸¦ ÀÌÇØÇÏÀÚ¸é µû¿ÈÇ¥·Î µÑ·¯½ÎÀÌÁö ¾ÊÀº °ø¹é¹®ÀÚ(whitespace; ¿ªÀÚÁÖ:ÅÇ ¹®ÀÚ, ½ºÆäÀ̽º¹Ù ¹®ÀÚ, ÁÙ¹Ù²Þ ¹®ÀÚ µî º¸ÅëÀº ȸé»ó¿¡ ºó °÷À¸·Î¸¸ Ç¥½ÃµÇ´Â Á¶Æǹ®ÀÚ¸¦ ¸»ÇÔ)°¡ ¾Õ¿¡ ºÙÀ» ¶§¿¡´Â °áÄÚ ÀÎÀÚÀÇ ÀϺκÐÀÌ ¾Æ´ÏÁö¸¸, µÚ¿¡ µû¶ó ºÙ´Â °ø¹é¹®ÀÚ´Â ¾ðÁ¦³ª ÀÎÀÚÀÇ ÀϺκÐÀ̶ó´Â °ÍÀ» ±â¾ïÇÏÀÚ.
°¢°¢ÀÇ ÀÎÀÚÀÇ ¾Õ¿¡ ºÙÀº °ø¹é¹®ÀÚ°¡ µû¿ÈÇ¥·Î ¹ÀÌÁö ¾ÊÀº °ÍÀ̶ó¸é Á¦°ÅµÈ´Ù. °¢°¢ÀÇ ÀÎÀÚ¿¡¼ µû¿ÈÇ¥·Î ¹¿©ÁöÁö ¾ÊÀº ¸ðµç °ýÈ£´Â ¦ÀÌ ¸Â¾Æ¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é, foo°¡ ¸ÅÅ©·Î¶ó°í ÇÒ ¶§¿¡,
foo(() (`(') `(')
ÀÌ°ÍÀº ÇϳªÀÇ ÀÎÀÚ¸¦ °¡Áö´Â ¸ÅÅ©·Î¸¦ È£ÃâÇÑ´Ù. ±× °ªÀº `() (() ('ÀÌ´Ù.
ÀÎÀÚ°¡ È®ÀåµÇ±â¸¦ È®½ÇÈ÷ ¹Ù¶ó´Â °ÍÀÌ ¾Æ´Ñ ÇÑ ¸ÅÅ©·Î¿¡¼ ¸ðµç ÀÎÀÚ¸¦ µû¿ÈÇ¥·Î ¹´Â °ÍÀº Åë»óÀûÀÎ ½À°üÀÌ´Ù. ±×·¡¼, À§ÀÇ °ýÈ£ÀÇ ¿¹¿¡¼ Á¦´ë·Î ÇÏ´Â `¿Ã¹Ù¸¥' ¹æ¹ýÀº ´ÙÀ½°ú °°ÀÌ ÇÏ´Â °ÍÀÌ´Ù.
foo(`() (() (')
¾î·µç, ¾î¶² ÀÎÀÚ¿¡¼´Â µû¿ÈÇ¥°¡ ¾ø¾î¾ß ÇÒ °æ¿ìµµ ÀÖ°í, ±×·¸°Ô ÇÏ´Â °ÍÀÌ Æ²¸° °Íµµ ¾Æ´Ï´Ù. ±×Àú ´ç½ÅÀÌ Á¶½ÉÇÏÁö ¾Ê´Â´Ù¸é, ÀλýÀ» Á¶±Ý Çè³ÇÏ°Ô ¸¸µé »ÓÀÌ´Ù.
¸ÅÅ©·Î È£Ãâ¿¡¼ ÀÎÀÚ°¡, ¸¸¾à ÀÖ´Ù¸é, ¼öÁýµÇ´Â ´Ü°è°¡ ³¡³ ÈÄ ±× ¸ÅÅ©·Î´Â È®ÀåµÈ´Ù. ±×¸®°í È®ÀåµÈ ÅؽºÆ®´Â ´Ù½Ã ÀÔ·ÂÀ¸·Î ³Ö¾îÁö°í, (µû¿ÈÇ¥·Î ¹ÀÎ °ÍÀ» ¹þ°Ü³½ ÈÄ) ÀÐÇôÁø´Ù. µû¶ó¼ ù¹ø°ÀÇ ¸ÅÅ©·Î È£ÃâµéÀÇ È®Àå¿¡¼, ¿ÏÀüÇÏ°Ôµç ºÎºÐÀûÀ¸·Îµç, ´Ù¸¥ ¸ÅÅ©·Î È£ÃâµéÀÌ Æ÷ÇԵȴٸé, ÇÑ ¸ÅÅ©·Î È£Ãâ·ÎºÎÅÍ È®ÀåµÈ ÅؽºÆ®¿¡¼ ´õ ¸¹Àº ¸ÅÅ©·Î È£ÃâÀ» ¾ß±âÇÒ ¼ö ÀÖ´Ù.
¸Å¿ì °£´ÜÇÑ ¿¹¸¦ Çϳª µé¸é, ¾Æ·¡ÀÇ foo°¡ `bar'·Î È®ÀåµÇ°í, bar°¡ `Hello World'·Î È®ÀåµÈ´Ù°í °¡Á¤ÇÒ ¶§¿¡ ´ÙÀ½ÀÇ ÀÔ·Â
foo
´Â ¸ÕÀú `bar'·Î È®ÀåµÇ°í, ´Ù½Ã ÀÐÇôÁ®¼ `Hello World'·Î È®ÀåµÈ´Ù.
Go to the first, previous, next, last section, table of contents.