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


»ê¼ú ¿¬»êÀ» À§ÇÑ ¸ÅÅ©·Î

Á¤¼ö ¿¬»êÀ» À§ÇÑ ±â´ÉÀº m4¿¡ Æ÷ÇÔÀÌ µÇ¾î ÀÖÀ¸¸ç ÀÌ°ÍÀº C¿Í ºñ½ÁÇÑ ¹®¹ýÀ» °¡Áø´Ù. ÆíÀÇ»ó °£´ÜÇÑ Áõ°¡¿Í °¨¼Ò ¿¬»êÀ» À§ÇÑ ³»Àå ¸ÅÅ©·Îµµ ÀÖ´Ù.

Áõ°¡¿Í °¨¼Ò ¿¬»êÀÚ

Á¤¼öÀÇ Áõ°¡¿Í °¨¼Ò °è»êÀº ³»Àå ¸ÅÅ©·ÎÀÎ incr°ú decrÀ» »ç¿ëÇÏ¸é µÈ´Ù.

incr(number)
decr(number)

ÀÌ°ÍÀº numberÀÇ °ªÀÌ °¢°¢ Çϳª¾¿ Áõ°¡Çϰųª °¨¼ÒÇÑ ¼ýÀÚ·Î È®ÀåµÈ´Ù.

incr(4)
=>5
decr(7)
=>6

incr, decr ³»Àå ¸ÅÅ©·Î´Â ÀÎÀÚ°¡ ÀÖÀ» ¶§¿¡¸¸ ÀνĵȴÙ.

Á¤¼ö½ÄÀÇ °ªÀ» ±¸Çϱâ

Á¤¼ö½ÄÀÇ °ªÀº eval·Î ±¸ÇÒ ¼ö ÀÖ´Ù.

eval(expression, opt radix, opt width)

ÀÌ°ÍÀº expressionÀÇ °ªÀ¸·Î È®ÀåµÈ´Ù.

½ÄÀº ´ÙÀ½ÀÇ ¿¬»êÀÚ¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù. ¾Æ·¡´Â ¿¬»êÀÚÀÇ ¿ì¼±¼øÀ§°¡ ³ôÀº °ÍºÎÅÍ ³ª¿­ÇÏ¿´´Ù.

-
´ÜÇ× ¸¶À̳ʽº
**
°ÅµìÁ¦°ö
* / %
°ö¼À, ³ª´°¼À, ³ª¸ÓÁö
+ -
µ¡¼À°ú »¬¼À
<< >>
¿ÞÂÊ ¶Ç´Â ¿À¸¥ÂÊ ¹Ð±â(½ÃÇÁÆ®)
== != > >= < <=
°ü°è ¿¬»êÀÚµé
!
³í¸® ºÎÁ¤
~
ºñÆ®º°(bitwise) ºÎÁ¤
&
ºñÆ®º° and
^
ºñÆ®º° ¹èŸÀû-or
|
ºñÆ®º° or
&&
³í¸® °ö(and)
||
³í¸® ÇÕ(or)

°ÅµìÁ¦°öÀ» Á¦¿ÜÇÏ°í´Â ¸ðµç ¿¬»êÀÚ´Â ¿ÞÂʺÎÅÍ °áÇյȴÙ.

¸¹Àº m4ÀÇ ±¸Çö¿¡¼­ `^'¸¦ °ÅµìÁ¦°ö ¿¬»êÀÚ·Î »ç¿ëÇÏ´Â ¹Ý¸é¿¡, ±× ¿Ü ´Ù¸¥ ¸¹Àº °Íµé¿¡¼­´Â `^'¸¦ ºñÆ®º° ¹èŸÀû-or¸¦ ÇÏ´Â ¿¬»êÀÚ·Î »ç¿ëÇÑ´Ù. GNU `m4'´Â Çൿ¹æ½ÄÀ» º¯°æÇÏ¿´´Âµ¥, Àü¿¡´Â °ÅµìÁ¦°ö ¿¬»êÀÚ·Î `^'¸¦ »ç¿ëÇß´Ù°¡, ÀÌÁ¦´Â ºñÆ®º° ¹èŸÀû-or ¿¬»êÀ» ÇÏ°Ô ¹Ù²î¾ú´Ù.

Á¢µÎ»ç¸¦ Ưº°È÷ ºÙÀÌÁö ¾ÊÀ¸¸é 10Áø¼öÀÌ´Ù. °£´ÜÈ÷ `0'À» Á¢µÎ»ç·Î ¾²¸é 8Áø¼ö°¡ µÈ´Ù. `0x'¸¦ ¾Õ¿¡ ºÙÀ̸é 16Áø¼ö°¡ µÈ´Ù. `0b'¸¦ ¾Õ¿¡ ºÙÀ̸é 2Áø¼ö°¡ µÈ´Ù. @smap{0r}À» ¾Õ¿¡ ºÙÀ̸é 1°ú 36 »çÀÌÀÇ ÀÓÀÇÀÇ ¹Ø¼ö·Î Ç¥ÇöµÈ ¼ö°¡ µÇ´Âµ¥, ÀÌ Á¢µÎ»ç´Â ¹Ù·Î ±× µÚ¿¡ ¹Ø¼ö¸¦ ³ªÅ¸³»´Â 10Áø¼ö Ç¥½Ã, ±× ´ÙÀ½¿¡ ÇϳªÀÇ ÄÝ·Ð(:), ±× ´ÙÀ½¿¡ ¼ö¸¦ ÀÌ·ç´Â ¼ýÀÚµéÀÌ ºÙ´Â´Ù. ¾î¶² ±â¼ö¹ýÀ̵çÁö ¼ýÀÚ´Â `0', `1', `2', ...ÀÌ´Ù. `9'¸¦ ³Ñ¾î°¡¸é `a', `b', ...¿¡¼­ `z'±îÁöÀÌ´Ù. ¼Ò¹®ÀÚ¿Í ´ë¹®ÀÚ´Â ¼­·Î ¼¯¾î¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

°ýÈ£´Â ÇÊ¿äÇÑ °æ¿ì ºÎºÐ Ç¥Çö½ÄµéÀ» ¹­´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù. °ü°è ¿¬»êÀÚ´Â ÂüÀ̸é 1À», °ÅÁþÀ̸é `0'À» ¸®ÅÏÇÑ´Ù.

¿©±â¿¡ evalÀÇ ¸î °³ÀÇ ¿¹°¡ ÀÖ´Ù.

eval(-3 * 5)
=>-15
eval(index(`Hello world', `llo') >= 0)
=>1
define(`square', `eval(($1)**2)')
=>
square(9)
=>81
square(square(5)+1)
=>676
define(`foo', `666')
=>
eval(`foo'/6)
error-->51.eval:14: m4: Bad expression in eval: foo/6
=>
eval(foo/6)
=>111

³¡¿¡¼­ µÎ ¹ø°ÀÇ ¿¹¿¡¼­ º¸¿©ÁÖµí, evalÀº ¸ÅÅ©·Î À̸§Àº Ãë±ÞÇÏÁö ¾ÊÀ¸¸ç, ¸ÅÅ©·Î À̸§ÀÌ ÇÕ´çÇÑ Ç¥Çö(¶Ç´Â ÇÕ´çÇÑ Ç¥ÇöÀÇ ÀϺκÐ)À¸·Î È®ÀåµÉÁö¶óµµ ±×·¸´Ù. ±×·¯¹Ç·Î ¸ðµç ¸ÅÅ©·Î´Â eval¿¡°Ô Àü´ÞµÇ±â Àü¿¡ È®ÀåµÇ¾î¾ß ÇÑ´Ù.

radix°¡ ¸í½ÃµÈ´Ù¸é, ±×°ÍÀº È®Àå °á°ú¿¡¼­ »ç¿ëµÇ´Â ±â¼ö¹ýÀ» ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. µðÆúÆ® ±â¼ö´Â 10ÀÌ´Ù. evalÀÇ °á°ú´Â Ç×»ó ºÎÈ£°¡ ÀÖ´Ù. width ÀÎÀÚ´Â Ãâ·ÂµÉ ¶§ÀÇ ÃÖ¼ÒÇÑÀÇ ÆøÀ» ÁöÁ¤ÇÑ´Ù. °á°ú´Â ÁöÁ¤µÈ ³ÐÀÌ¿¡¼­ ºñ´Â °ø°£À» 0À¸·Î ä¿î´Ù.

eval(666, 10)
=>666
eval(666, 11)
=>556
eval(666, 6)
=>3030
eval(666, 6, 10)
=>0000003030
eval(-666, 6, 10)
=>-000003030

±â¼ö¹ýÀÎ radix´Â 36º¸´Ù Ŭ ¼ö ¾ø´Ù´Â °ÍÀ» ±â¾ïÇ϶ó.

³»Àå ¸ÅÅ©·Î evalÀº ÀÎÀÚ°¡ ÀÖ¾î¾ß¸¸ ÀνĵȴÙ.


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