Go to the first, previous, next, last section, table of contents.


¸ÅÅ©·Î »ç¿ëÇϱâ

ÀÌ ÀåÀº ¸ÅÅ©·ÎÀÇ ±âº»ÀûÀÎ »ç¿ë¹ý°ú ¸ÅÅ©·Î¿¡¼­ ÀÎÀÚ¸¦ ³Ñ°ÜÁÖ´Â ¹æ¹ý°ú ¸ÅÅ©·Î°¡ ¾î¶»°Ô Ãë±ÞµÇ´ÂÁö¸¦ ¼³¸íÇÑ´Ù.

¸ÅÅ©·ÎÀÇ ±âº»ÀûÀÎ »ç¿ë¹æ¹ý

¸ÅÅ©·Î¸¦ ºÒ·¯³¾ ¶§¿¡´Â ¾Æ·¡¿Í °°ÀÌ ÇÑ´Ù.

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.