±âÁ¸ LittleTree/ReadingTeXbook/2006-05 ¿¡ ÀÖ´ø ³»¿ëÀε¥, ÁÙ¹Ù²Þ ¾Ë°í¸®Áò°ú °ü°è¾ø´Â ±ÛÀ» ¿©±â·Î ¿Å±é´Ï´Ù.
ÃÖ±Ù¿¡ ¸Å¿ì Èï¹Ì·Î¿î ÆäÀÌÆÛ¸¦ ¹ß°ßÇß½À´Ï´Ù. ±×·¡¼ ±×°Í¶§¹®¿¡ ÅغÏÀб⸦ Àá±ñµ¿¾È Áß´ÜÇß½À´Ï´Ù. Áß´ÜÇÒ ÃæºÐÇÑ ÀÌÀ¯°¡ ÀÖ´Â ÆäÀÌÆÛÀÔ´Ï´Ù.
FIFO and LIFO sing the BLUes, Kees van der Laan, MAPS 92.2 (revision March 1996)
|
ÁÖ·Î ¸®½ºÆ® 󸮿¡ ´ëÇÑ Å×Å©´Ð(TeXnique) ³»¿ëÀ» ´ã°í ÀÖ´Â ÆäÀÌÆÛÀÔ´Ï´Ù. ¿©±â¼ÀÇ ¸®½ºÆ® ó¸® ±â¹ý(Å×Å©´Ð)À̶ó ÇÔÀº º°°Í¾Æ´Õ´Ï´Ù. ¿ì¸®°¡ ÀÌ¹Ì ¾Ë°í ÀÖ´Â "²¿¸®Àç±Í±â¹ý"À̶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ²¿¸®Àç±Í±â¹ýÀÌ ÇÏ´Â ÀÏÀÌ ÁÖ¾îÁø ÀÎÀÚ¿¡¼ ±× ÀÎÀÚ¸¦ ±¸¼ºÇÏ´Â ÅäÅ«µéÀ» ÇϳªÇϳª¾¿ ó¸®ÇÏ´Â °ÍÀ̾ú½À´Ï´Ù. ¿©±â¼ ÀÎÀÚ¸¦ ¸®½ºÆ®¶ó°í ÇÏ°í, ÅäÅ« °¢°¢À» ¸®½ºÆ® ¿ä¼Ò(list element)¶ó°í »ý°¢ÇÏ¸é µË´Ï´Ù.
ÆäÀÌÆÛÀÇ Á¦¸ñ¿¡ ³ª¿ÍÀÖ´Â "FIFO"¶ó ÇÔÀº "First In First Out"ÀÇ ¾àÀÚÀÔ´Ï´Ù. ¿ì¸®¸»·Î ÇÏÀÚ¸é, ¸ÕÀú µé¾î¿Â ³ðÀ» ¸ÕÀú ³»º¸³½´Ù´Â ¶æÀÔ´Ï´Ù. Áï ¾î¶² ¸ÅÅ©·Î¿Í ±×ÀÇ ÀÎÀÚ·Î ¸®½ºÆ®°¡ ÁÖ¾îÁ³À»¶§, ¸®½ºÆ®ÀÇ ¿ä¼ÒµéÀÌ Â÷·Ê·Î ¸ÅÅ©·Î¿¡ Àû¿ëµÈ´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦µé¾î, \foo abc\oof°¡ ÀÖÀ»¶§, ¸¸¾à \foo°¡ FIFOÀÇ ²¿¸®Àç±Í±â¹ýÀ¸·Î ±¸ÇöµÈ ¸ÅÅ©·Î¶ó¸é, ±× ¸ÅÅ©·ÎÀÇ ¶æÀº ´ÙÀ½°ú °°½À´Ï´Ù.
´Ù½Ã ÇÑ ¹ø ¼³¸íÇÏÀÚ¸é, ¸ÅÅ©·Î \foo¿¡ 'abc'¶ó´Â ¸®½ºÆ®°¡ ÀÔ·Â ½ºÆ®¸²(stream)À¸·Î µé¾î¿À¸é \foo´Â µé¾î¿À´Â ¼ø¼´ë·Î ó¸®ÇÏ¿© ³»º¸³½´Ù´Â ÀǹÌÀÔ´Ï´Ù. ½¬¿î ³»¿ëÀÏÁöµµ ¸ð¸£´Âµ¥, ÀÛÀº³ª¹«°¡ ³Ê¹« ÀåȲÇÏ°Ô ¼³¸íÇÏ´Â °ÍÀº ¾Æ´Ñ°¡ ¸ð¸£°Ú½À´Ï´Ù.
\foo a \foo b \foo c
±×·¸´Ù¸é, ÆäÀÌÆÛ Á¦¸ñ¿¡ ³ª¿ÍÀÖ´Â ´Ù¸¥ ÀÌ»óÇÑ ´Ü¾î "LIFO"´Â ¹«½¼ ¶æÀϱî¿ä? FIFO¸¦ ÈùÆ®»ï¾Æ »ý°¢Çغ¸¼¼¿ä. ±×·¸ÁÒ. ¹Ù·Î "Last In First Out"ÀÇ ¾àÀÚÀÔ´Ï´Ù. LIFO¸¦ Àû¿ëÇϸé \foo abc\oof´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
ÀÌÁ¦ ¾îÈÖ¿Í °³³ä¿¡ ´ëÇÑ ±âº»Áö½ÄÀº ¸ðµÎ °®Ãß¾ú½À´Ï´Ù. º»°ÝÀûÀ¸·Î ½ÃÀÛÇÏ°Ú½À´Ï´Ù. ÀÛÀº³ª¹«°¡ ÀÌ ÆäÀÌÆÛ¿¡ ¸Å·áµÈ °ÍÀº ±âÁ¸ÀÇ ¾Ë°íÀÖ´ø ²¿¸®Àç±Í±â¹ýÀÌ ³Ê¹«µµ ¿¤·¹°½ºÇÏ°í È¿À²ÀûÀ¸·Î ±¸ÇöµÇ°í Àֱ⠶§¹®ÀÔ´Ï´Ù. ÀÌ ÆäÀÌÆÛ¿¡¼ ¸»ÇÏ´Â FIFO°¡ Àû¿ëµÈ ²¿¸®Àç±Í±â¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
¿ì¸®°¡ ±âÁ¸¿¡ ¾Ë°íÀÖ´ø ²¿¸®Àç±Í±â¹ý°ú Á¤È®È÷ µ¿ÀÏÇÑ ÀÏÀ» ÇÕ´Ï´Ù. ¿ÀÈ÷·Á "\let\next=\foo"ÀÌ·± ½ÄÀÇ ÇÒ´ç¹®(assignment statement)ÀÌ ÇÊ¿ä¾ø½À´Ï´Ù. ÀÌ ¹æ¹ýÀÌ ±âÁ¸ÀÇ ¹æ¹ýº¸´Ù °£´ÜÇÏ¸é¼ È¿À²ÀûÀ̶ó°í ÇÕ´Ï´Ù. ±×¸®°í ÀÌ \fifoÀÇ ÀÀ¿ëÀ¸·Î ´Ü¾îµéÀ» ó¸®ÇÏ´Â ¹æ¹ýÀº ¾î¶»°Ô ÇÏ¸é µÉ±î¿ä? ÀÌÀü¿¡ ÀÛÀº³ª¹«°¡ ÀÛ¼ºÇÑ TeX ¸ÅÅ©·Î ÀÛ¼º ±â¹ýÀ̶ó´Â ±ÛÀ» º¸¸é, ²¿¸®Àç±Í±â¹ý°ú µ¿ÀÏÇÏ°í ½ºÆäÀ̽º¸¸À¸·Î ±¸ºÐÇß´ø °ÍÀ» ¾Ë¼ö ÀÖ½À´Ï´Ù. ¸¶Âù°¡Áö·Î ¿©±â¼µµ ½ºÆäÀ̽º¸¦ ±¸ºÐÀÚ(delimeter)·Î »ç¿ëÇÏ¸é µË´Ï´Ù. ´ÙÀ½°ú °°½À´Ï´Ù.
±âÁ¸ÀÇ ¹æ¹ýº¸´Ù ´Ü¼ø ¸í·áÇÕ´Ï´Ù. À§ µÎ°³ÀÇ ¸ÅÅ©·Î¿¡¼ \process, \processw¸¸ ÇÏ°íÀÚ ÇÏ´Â ÀÏÀÇ ¸ñÀû¿¡ ¸Â°Ô ±¸ÇöÇØ ÁÖ¸é µË´Ï´Ù. ½±°í °£´ÜÇÕ´Ï´Ù.
\foo c \foo b \foo a
\def\fifo#1{\ifx\ofif#1\ofif\fi
\process#1\fifo}
\def\ofif#1\fifo{\fi}
\def\fifow#1 {\ifx\wofif#1\wofif\fi
\processw{#1}\ \fifow}
\def\wofif#1\fifow{\fi}
±×·¯¸é À§ÀÇ µÎ°³ÀÇ ¸ÅÅ©·Î¸¦ °¡Áö°í ÅØºÏ 67ÆäÀÌÁöÀÇ ¿¬½À¹®Á¦11.5°¡ ¾ó¸¶³ª ½±°Ô ÇØ°áµÇ´ÂÁö º¸°Ú½À´Ï´Ù. ±× ¿¬½À¹®Á¦¸¦ ¾à°£ °£·«È Çϸé, ´ÙÀ½°ú °°½À´Ï´Ù. \demobox¶ó´Â ¸ÅÅ©·Î¸¦ Á¤Çϴµ¥,
¶ó°í ÇÏ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ ¾ò´Â ¸ÅÅ©·ÎÀÔ´Ï´Ù.
\demobox{Tough exercise}
¼Ò½º´Â ´ÙÀ½°ú °°½À´Ï´Ù. (DohyunKim´ÔÀÌ ÁöÀûÇØÁֽŠ°Í°ú Á¦½ÃÇØ ÁֽŠÇØ°áÃ¥À¸·Î ¼Ò½º¸¦ ÀϺΠ¼öÁ¤ÇÏ¿´½À´Ï´Ù.)
¹®Á¦¸¦ ¿ø·¡ÀÇ ¹®Á¦¿¡¼ ¾à°£ °£·«È Çϱä ÇßÁö¸¸, Knuth°¡ Á¦½ÃÇÑ ¿ø·¡ Çش亸´Ù ¸¹ÀÌ °£´ÜÇØ Áø°ÍÀ» È®ÀÎÇÏ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
\def\fifo#1{\ifx\ofif#1\ofif\fi
\process#1\fifo}
\def\ofif#1\fifo{\fi}
\def\fifow#1 {\ifx\wofif#1\wofif\fi
\processw{#1}\ \fifow}
\def\wofif#1\fifow{\fi}
\def\processw#1{\fifo#1\ofif}
\def\process#1{\boxit#1}
\def\boxit#1{\setbox0=\hbox{#1}%
\hbox{\lower\dp0%
\vbox{\offinterlineskip\hrule
\hbox{\vrule\phantom#1\vrule}\hrule}%
}%
}
\def\demobox#1{\leavevmode\fifow #1 \wofif \unskip{} }
\demobox{Tough exercise}
¸¶Áö¸·À¸·Î LIFO¸¦ Àû¿ëÇÑ ¸ÅÅ©·Î \lifo...\ofil´Â ¾î¶»°Ô ±¸ÇöÇÏ¸é µÉ±î¿ä? ÇÑ ¹ø Çغ¸¼¼¿ä.
ÈùÆ®: \fifo...\ofif ¸¦ Á¶±Ý¸¸ ¹Ù²Ù¸é µË´Ï´Ù. \process¸¦ ¾ðÁ¦ ½ÇÇàÇÏ´À³Ä°¡ ¹®Á¦ÀÔ´Ï´Ù.
- \demobox¸¦ ¾î¶»°Ô Á¤ÀÇÇÏ¸é ¹Ù·ÎÀâÀ» ¼ö Àִ°¡? (¾îµð°¡ ¾î¶»°Ô À߸øµÈ °ÍÀΰ¡?)
- Åؼҽº´Â ¾î¶»°Ô µð¹ö±ëÇϴ°¡? (gdb¸¦ ÀÌ¿ëÇϵíÇÑ ¹æ¹ýÀÌ Àִ°ÍÀΰ¡?, À§¿¡ trace´Â ¾î¶² ¹æ¹ýÀ¸·Î ÇÑ °ÍÀΰ¡?)
ÁöÀûÇØ Áּż °¨»çÇÕ´Ï´Ù. ±×¸®°í °ü½ÉÀ» °¡Áö°í ÀоîÁּż ´õ¿í °¨»çÇÕ´Ï´Ù. -- ÀÛÀº³ª¹« 2006-05-10 14:08:31