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


Frozen »óŸ¦ »¡¸® ÀûÀç(load)Çϱâ

°¡²û ºñ±³Àû Å« m4 ÀÀ¿ë ½ºÅ©¸³Æ®µéÀº ¼ö¹é °³ÀÇ Á¤ÀÇ¿Í ±× ¿ÜÀÇ ¿À·¡ °É¸®´Â ÃʱâÈ­¸¦ Æ÷ÇÔÇÏ´Â °øÅëÀûÀÎ ±â¹Ý À§¿¡ ÀÛ¼ºµÇ¾î ÀÖÀ» ¼ö ÀÖ´Ù. º¸Åë, °øÅëÀûÀÎ ±â¹ÝÀº ÇÑ °³ ¶Ç´Â ¿©·¯ °³ÀÇ ¼±¾ð À§ÁÖÀÇ ÆÄÀϵ鿡 µû·Î ¸ð¾ÆµÐ´Ù. ÀÌ·± ÆÄÀϵéÀº °¢°¢ÀÇ m4 ºÒ·¯³»±â¿¡¼­ »ç¿ëÀÚÀÇ ÀÔ·Â ÆÄÀϺ¸´Ù ¸ÕÀú ³ª¿­µÇµç°¡, ¾Æ´Ï¸é ÀÌ ÀÔ·Â ÆÄÀÏ(¿ªÀÚÁÖ: »ç¿ëÀÚÀÇ ÀÔ·Â ÆÄÀÏ)·ÎºÎÅÍ includeµÈ´Ù.

Å« ÀÀ¿ë ½ºÅ©¸³Æ®¿¡¼­ÀÇ °øÅëÀûÀÎ ±â¹ÝÀ» Àд °ÍÀ» ¸Å¹ø °è¼ÓÇؼ­ ¹Ýº¹ÇÑ´Ù¸é ±×°ÍÀº ½Ã°£ÀÇ ³¶ºñÀÏ ¼ö ÀÖ´Ù. GNU m4´Â ±æ´Ù¶õ °øÅë ±â¹ÝÀ» »ç¿ëÇÏ´Â ÀÀ¿ë ½ºÅ©¸³Æ®ÀÇ ½ÃÀÛ ¼ÓµµÀÇ Çâ»óÀ» ²ÒÇÏ´Â ¸î °¡ÁöÀÇ ÀåÄ¡¸¦ Á¦°øÇÑ´Ù. »ç¿ëÀÚ°¡ ´ÙÀ½°ú °°ÀÌ ¹Ýº¹ÀûÀ¸·Î »ç¿ëÇÑ´Ù°í °¡Á¤Çغ¸ÀÚ.

m4 base.m4 input.m4

`base.m4'¿¡´Â °íÁ¤ÀûÀÎ ³»¿ëÀÌ ´ã°Ü ÀÖ°í, `input.m4'¿¡´Â °¡º¯ÀûÀÎ ³»¿ëÀÌ ´ã°Ü ÀÖ´Ù°í ÇÏÀÚ. ±×·¯¸é, »ç¿ëÀÚ´Â ¾Æ±î¿Í´Â ´Þ¸® ´ÙÀ½°ú °°ÀÌ ½ÇÇàÇÒ ¼öµµ ÀÖ´Ù.

m4 -F base.m4f base.m4

óÀ½ ÇÑ ¹øÀº À§¿Í °°ÀÌ ½ÇÇà½ÃÅ°°í, ÀÌÈÄ¿¡´Â

m4 -R base.m4f input.m4

ÀÌ·¸°Ô °¡º¯ÀûÀÎ ÀÔ·ÂÀ¸·Î ½ÇÇà½ÃŲ´Ù. -F ¿É¼ÇÀÌ ÀÖ´Â, óÀ½ È£Ãâ¿¡¼­´Â ´ÜÁö `base.m4'¸¸À» ÀÐ°í ½ÇÇà½ÃÄѼ­, ´Ù¾çÇÑ ÀÀ¿ë ¸ÅÅ©·ÎµéÀ» Á¤ÀÇÇϰųª ´Ù¸¥ ÃʱâÈ­ °è»êÀ» ÇÑ´Ù. ´ÜÁö ÇÑ ¹ø¸¸ `base.m4'°¡ ¿ÏÀüÇÏ°Ô Ã³¸®µÇ°í, GNU m4´Â `base.m4f'¶ó´Â À̸§À» °¡Áø frozen ÆÄÀÏÀ» »ý¼ºÇϴµ¥, ÀÌ°ÍÀº m4ÀÇ ³»ºÎÀûÀÎ »óŸ¦ ´ãÀº ÀÏÁ¾ÀÇ ½º³À¼¦(snapshot)À» Æ÷ÇÔÇÏ°í ÀÖ´Ù.

-R ¿É¼ÇÀÌ ÀÖ´Â, ±× ´ÙÀ½ È£ÃâµéÀº ´Ù¸¥ ¾î¶² ÆÄÀϵ麸´Ù ¸ÕÀú, `base.m4f'·ÎºÎÅÍ m4ÀÇ ¸Þ¸ð¸® ³»ºÎ »óŸ¦ ´Ù½Ã ÀûÀç(load)ÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ¼ö´ÜÀ¸·Î, °æÇè ¾ø´Â (¿ªÀÚÁÖ: ¿ø¹®Àº virginÀÓ) m4 º¹»çº»À¸·Î ½ÃÀÛÇÏ´Â °Í°ú´Â ´Þ¸®, ¿¹Àü¿¡ ½ÇÇàµÈ È¿°ú¸¦ º¹±¸ÇÑ ÈÄ¿¡ ÀÔ·ÂÀ» ÀÐ¾î µéÀÌ°Ô µÈ´Ù. ¿ì¸®ÀÇ ¿¹¿¡¼­´Â, ±× È¿°ú´Â ¸¶Ä¡ `base.m4'¸¦ óÀ½ºÎÅÍ ´Ù½Ã ÀоîµéÀÎ °Í°ú µ¿ÀÏÇÏ´Ù. ±×·¯³ª ±× È¿°ú°¡ ÈξÀ ´õ ºü¸£°Ô ´Þ¼ºµÈ´Ù.

ÇѹøÀÇ m4 ½ÇÇà¿¡¼­´Â µü Çϳª¸¸ÀÇ frozen ÆÄÀÏÀ» ¸¸µé°Å³ª ÀоîµéÀÏ ¼ö ÀÖ´Ù. µÎ °³ÀÇ frozen ÆÄÀÏÀ» ÇѲ¨¹ø¿¡ ó¸®ÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù. ¾î·µç, -R°ú -F¿É¼ÇÀ» µ¿½Ã¿¡ »ç¿ëÇÏ¿© @frozen ÆÄÀϵéÀÌ Á¡ÁøÀûÀ¸·Î(incrementally) °»½ÅµÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µç´Ù¸é, ¾à°£¸¸ ½Å°æÀ» ¾´´Ù¸é, ´ÙÀ½ÀÇ ¸í·ÉÀº

m4 file1.m4 file2.m4 file3.m4 file4.m4

´ÙÀ½°ú °°Àº ¼øÂ÷ÀûÀÎ ¸í·Éµé·Î ÂÉ°³Áú ¼ö ÀÖÀ¸¸ç, °°Àº Ãâ·ÂÀ» ½×°Ô µÈ´Ù.

m4 -F file1.m4f file1.m4
m4 -R file1.m4f -F file2.m4f file2.m4
m4 -R file2.m4f -F file3.m4f file3.m4
m4 -R file3.m4f file4.m4

¾à°£ ÁÖÀÇ°¡ ÇÊ¿äÇѵ¥, ±× ÀÌÀ¯´Â ¸ðµç °æ¿ì¿¡ ÀÌ°ÍÀÌ Á¦´ë·Î ÀÛµ¿Çϵµ·Ï ÇÒ ¸ðµç ³ë·ÂÀ» ¾ÆÁ÷ ±â¿ïÀÌÁö ¾ÊÀº »óÅÂÀ̱⠶§¹®ÀÌ´Ù. ƯÈ÷, ¸ÅÅ©·ÎÀÇ ÃßÀû(trace) ¼Ó¼ºÀº 󸮵ÇÁö ¾ÊÀ¸¸ç, °Ô´Ù°¡ changewordÀÇ ÇöÀç ¼³Á¤µµ ¸¶Âù°¡ÁöÀÌ´Ù. ¶ÇÇÑ ÇÑ ¹øÀÇ È£Ãâ¿¡¼­ »ç¿ëµÈ m4ÀÇ ¾î¶² ¿É¼ÇÀÌ ±× ´ÙÀ½¿¡´Â »ç¿ëµÇÁö ¾ÊÀ» ¶§ÀÇ »óÈ£ÀÛ¿ëÀº ¾ÆÁ÷ ¿ÏÀüÈ÷ ºÐ¼®µÇÁö ¾Ê¾Ò´Ù. ¹Ý¸é¿¡, pushdefµÈ Á¤ÀǵéÀÇ ½ºÅõéÀÌ ¿Ã¹Ù¸£°Ô ó¸®µÉ °ÍÀº È®½ÇÇϸç, ¶ÇÇÑ undefineµÇ°Å³ª À̸§ º¯°æµÈ ³»Àå-¸ÅÅ©·Îµé, º¯°æµÈ ÀοëºÎÈ£¿ë ¹®ÀÚ¿­°ú º¯°æµÈ ÁÖ¼®Ç¥½Ã¿ë ¹®ÀÚ¿­µµ ¸¶Âù°¡ÁöÀÌ´Ù.

m4°¡ ³Ãµ¿µÉ ¶§(¿ªÀÚÁÖ: ¹®¸Æ¿¡ ¸Â°Ô ÀÇ¿ªÇϸé, `frozen ÆÄÀÏÀ» ¸¸µé ¶§'ÀÓ), ½ÇÇàÀÇ ³¡¿¡¼­ ÀϾ´Â ÀÚµ¿ÀûÀÎ Àüȯ-µÇµ¹¸®±â(undiversion)´Â ¾ïÁ¦µÈ´Ù. ´ë½Å¿¡, ¾ç¼ö°ªÀÎ ¹øÈ£°¡ ºÙ¿©Áø ¸ðµç ÀüȯµéÀº frozen ÆÄÀÏ ³»ºÎ·Î ÀúÀåµÈ´Ù. È°¼º »óÅÂÀÎ ÇöÀç Àüȯ ¹øÈ£µµ ¿ª½Ã µé¾î°£´Ù.

´Ù½Ã ÀûÀç(reload)ÇÒ frozen ÆÄÀÏÀÌ ²À ÇöÀç ÀÛ¾÷ µð·ºÅ丮¿¡ ÀÖ¾î¾ß ÇÒ ÇÊ¿ä´Â ¾ø´Ù. include ÆÄÀÏ°ú ¶È°°Àº ¹æ¹ýÀ¸·Î °Ë»öµÈ´Ù. (see section »ðÀÔÇÒ ÆÄÀÏ °Ë»öÇϱâ)

frozen ÆÄÀÏÀº ¼­·Î ´Ù¸¥ ¾ÆÅ°ÅØó »çÀÌ¿¡¼­ °øÀ¯°¡ °¡´ÉÇÏ´Ù. ÇϳªÀÇ ±â°è¿¡¼­ frozen ÆÄÀÏÀ» ÀÛ¼ºÇÑ ÈÄ, °°°Å³ª ¾Æ´Ï¸é ´õ »õ·Î¿î ¹öÀüÀÇ GNU m4¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ ±â°è¿¡¼­ ÀоîµéÀÌ´Â °ÍÀº ¾ÈÀüÇÏ´Ù. frozen ÆÄÀÏÀº ´Ü¼øÇÑ (ÆíÁý °¡´ÉÇÑ) ÅؽºÆ® ÆÄÀÏÀ̸ç, ¿©·¯ °³ÀÇ Áö½ÃÀÚ·Î ±¸¼ºµÇ¾î ÀÖ´Ù. °¢°¢ÀÇ ½ÃÀÛÀº ´ë¹®ÀÚ·Î µÇ¾î ÀÖÀ¸¸ç ÁÙ¹Ù²Þ ¹®ÀÚ(NL)·Î ³¡³­´Ù. Áö½ÃÀÚ°¡ ±â´ëµÇ´Â °÷ ¾îµð¼­³ª # ¹®ÀÚ´Â ÁÖ¼®À» ¸¸µç´Ù. ºó ÁÙ ¶ÇÇÑ ¹«½ÃµÈ´Ù. ¾Æ·¡ÀÇ ¼³¸í¿¡¼­ ¾ðÁ¦³ª, length´Â ´ëÀÀÇÏ´Â stringÀÇ ±æÀ̸¦ °¡¸®Å²´Ù. ¼ýÀÚ´Â ¾ðÁ¦³ª 10Áø¼ö·Î Ç¥½ÃµÈ´Ù. Áö½ÃÀÚµéÀº ´ÙÀ½°ú °°´Ù.

V number NL
ÆÄÀÏÀÇ Æ÷¸ËÀ» ¸í½ÃÇÑ´Ù(confirm). numberÀº 1À̾î¾ß ÇÑ´Ù.
C length1 , length2 NL string1 string2 NL
string1°ú string2¸¦ ÁÖ¼®ÀÇ ½ÃÀÛ°ú ³¡ Ç¥½Ã ¹®ÀÚ¿­·Î »ç¿ëÇÑ´Ù.
Q length1 , length2 NL string1 string2 NL
string1°ú string2¸¦ Àο뱸ÀÇ ½ÃÀÛ°ú ³¡ Ç¥½Ã ¹®ÀÚ¿­·Î »ç¿ëÇÑ´Ù.
F length1 , length2 NL string1 string2 NL
string1ÀÇ Á¤ÀǸ¦, pushdef¸¦ »ç¿ëÇÏ¿©, ³»Àå ¸ÅÅ©·Î ¿ø·¡ ¸íĪÀÌ string2ÀÎ ±â´ÉÀ¸·Î È®ÀåÇÏ¿© Á¤ÀÇÇÑ´Ù.
T length1 , length2 NL string1 string2 NL
string1ÀÇ Á¤ÀǸ¦, pushdef¸¦ »ç¿ëÇÏ¿©, string2·Î ÁÖ¾îÁø ÅؽºÆ®·Î È®ÀåÇÏ¿© Á¤ÀÇÇÑ´Ù.
D number, length NL string NL
¹øÈ£°¡ numberÀÎ ÀüȯÀ» ÇöÀçÀÇ ÀüȯÀ¸·Î ¼±ÅÃÇÑ´Ù. ±×¸®°í ÇöÀçÀÇ Àüȯ¿¡ stringÀ» º¹»çÇÑ´Ù. ºñÁ¸Àç Àüȯ¿¡ ´ëÇؼ­´Â numberÀÌ À½¼ö°¡ µÉ ¼öµµ ÀÖ´Ù. ±×Àú È°¼º ¼±Åø¸À» ÁöÁ¤ÇÏ·Á¸é, stringÀ» ºñ¿ö ³õ°í ÀÌ ¸í·É¾î¸¦ »ç¿ëÇϽÿÀ. Àüȯ¹øÈ£ÀÎ number°¡ 0À̸é, ±× ¹®ÀÚ¿­Àº Àç·Îµå µÉ ¶§ Ç¥ÁØÃâ·ÂÀ¸·Î ³ª°£´Ù. ±×·¯³ª ÀÌ·± °ÍÀº m4 ³»ºÎ¿¡¼­´Â »ý¼ºµÇÁö ¸øÇÑ´Ù.


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