== CWEB == $$\hbox{CWEB}=\hbox{\TeX}+\hbox{C programming language}$$ from KTUGContrib:3195 (by ÀÛÀº³ª¹«) CWEB À̶ó´Â ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀ» ¼Ò°³ÇÏ°íÀÚ ÇÕ´Ï´Ù. ¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀº ÀÌ °÷ À§Å°¿¡ TeXÀ» ¼Ò°³ÇÏ´Â °÷¿¡ ''¹®¼­È­ ÇÁ·Î±×·¡¹Ö'' À̶õ À̸§À¸·Î ÀÌ¹Ì ¼Ò°³°¡ µÈ °ÍÀ̱⵵ ÇÕ´Ï´Ù. TeX ÇÁ·Î±×·¥ ÀÚüµµ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛ Áß ÇϳªÀÎ WEBÀ¸·Î ÀÛ¼ºµÈ ÇÁ·Î±×·¥ÀÔ´Ï´Ù. CWEBÀº ±âÁ¸ÀÇ WEBÀ» º¸´Ù °­È­½ÃŲ °ÍÀ¸·Î °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÎ C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í TeXÀÇ Á¶ÇÕÀ¸·Î µÈ ½Ã½ºÅÛÀÔ´Ï´Ù. attachment:korean_cwebman.pdf === CWEB ¿¹Á¦ === ÷ºÎÆÄÀÏÀº CWEB ÇÁ·Î±×·¡¹ÖÀ» ¼Ò°³ÇÏ°íÀÚ °£´ÜÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ CWEBÀ¸·Î ÇÁ·Î±×·¡¹ÖÀ» ÇÑ´Ù¸é, ÇöÀç º¸´Ù ³ªÀº ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖÀ» °ÍÀ̶õ È®½ÅÀÌ Àֱ⿡ °¨È÷ ÀÌ·¸°Ô ¼Ò°³ÇÏ´Â °ÍÀÔ´Ï´Ù. ¹«¾ùº¸´Ùµµ CWEB ÇÁ·Î±×·¡¹ÖÀº Âü Àç¹ÌÀÖ½À´Ï´Ù. CWEB ½Ã½ºÅÛÀÇ ¼³Ä¡¹× °ü·Ã ¹®¼­µéÀº http://www.literateprogramming.com ¿¡¼­ ½±°Ô ã¾Æ º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. À§ À¥»çÀÌÆ®¿¡´Â C ÇÁ·Î±×·¡¹Ö ¾ð¾î »Ó¸¸ ¾Æ´Ï¶ó ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ÇÒ ¼ö ÀÖ´Â ¹®ÇÐÀû ÇÁ·Î±×·¥µµ ¸¹ÀÌ ¼Ò°³ µÇ¾î ÀÖ½À´Ï´Ù. ÷ºÎ ÆÄÀÏÀº ¾û¼ºÇÑ ÇÁ·Î±×·¥ÀÌÁö¸¸, ¿©·¯ºÐÀÌ CWEBÀ» Á¢ÇÏ´Â µ¥ µµ¿òÀÌ µÇ¾úÀ¸¸é ÁÁ°Ú½À´Ï´Ù. attachment:vrotate.tar.gz attachment:wc.pdf (Knuth°¡ ÀÛ¼ºÇÑ CWEB ¿¹Á¦) === CWEB ¼³Ä¡½Ã ÇÑ±Û °í·Á»çÇ× === UTF-8·ÎµÈ ÇѱÛÀ» Æ÷ÇÔÇÏ´Â cwebÀÇ ¼Ò½º ÆÄÀÏÀÎ .w ÆÄÀϷκÎÅÍ ctangle°ú cweave ¸í·É¾î¸¦ ÀÌ¿ëÇؼ­ C ÇÁ·Î±×·¥ ÆÄÀÏÀÎ .c ÆÄÀÏ°ú TeX ÆÄÀÏÀÎ .texÀ» ¸¸µé´Ùº¸¸é, ÀÔ·ÂÀÌ ³Ê¹« ±æ´Ù´Â °æ°í ¸Þ½ÃÁö°¡ ³ª¿É´Ï´Ù. ÀÌ´Â À§¸í·É¾îµéÀÌ ÆÄÀÏÀ» ó¸®Çϱâ À§Çؼ­ ³»ºÎÀûÀ¸·Î ¹öÆÛ(char ¹è¿­)¸¦ °¡Áö°í ÀÖ°í, ±× ¹öÆÛÀÇ ³¡À» ³ªÅ¸³»´Â buffer_end°¡ À۾Ƽ­ ³ª¿À´Â °æ°í ¸Þ½ÃÁöÀÔ´Ï´Ù. ÀÌ °æ¿ì´Â ¹öÆÛÀÇ ³¡À» ³ªÅ¸³»´Â º¯¼ö buffer_end¸¦ ÃæºÐÈ÷ Å©°ÔÇØÁÖ¸é ¹ß»ýÇÏÁö ¾Ê´Â °æ°í ¸Þ½ÃÁöÀÔ´Ï´Ù. ¿µ¾îÀÇ °æ¿ì´Â ¾ËÆĺª Çѹ®ÀÚ°¡ 1¹ÙÀÌÆ®À̱⠶§¹®¿¡ ±×·¯ÇÑ °æ°í ¸Þ½ÃÁö°¡ ¾ø½À´Ï´Ù. ¹°·Ð ¿µ¾îÀÇ °æ¿ìµµ ÇÑ ÁÙÀ» ³Ê¹« ±æ°ÔÇÏ¸é ±×·± ¸Þ½ÃÁö°¡ ³ª¿À°ÚÁÒ.:-) (Àú´Â utf-8¿¡ ´ëÇÑ Áö½ÄÀÌ ÀüÇô ¾ø½À´Ï´Ù.) utf-8·Î µÈ °æ¿ì´Â ÇÑ ¹®ÀÚ¸¦ 1¹ÙÀÌÆ®¿¡¼­ ÃÖ´ë 4¹ÙÀÌÆ®±îÁö Ç¥ÇöÇÑ´Ù°í µé¾ú½À´Ï´Ù. µû¶ó¼­ utf-8·Î ÀÛ¼ºµÈ ¼Ò½ºÀÇ °æ¿ì¸¦ À§Çؼ­ buffer_end¸¦ ÃÖ´ë 4¹è°¡ µÇ°ÔÇÏ¸é µË´Ï´Ù. ctangle°ú cweaveÀÇ È­ÀÏ ÀÔÃâ·Â¿¡ ´ëÇÑ ºÎºÐÀ̳ª °øÅë ºÎºÐÀº common.w(.c)¿¡ Àִµ¥, buffer_end¿¡ ´ëÇÑ ³»¿ëÀÌ ¹Ù·Î ÀÌ ÆÄÀÏ¿¡ ÀÖ½À´Ï´Ù. common.wÀÇ ÀϺΠ{{{ ------------------------------------------------------------------------------- @d buf_size 100 /* for \.{CWEAVE} and \.{CTANGLE} */ @d longest_name 1000 @d long_buf_size (buf_size+longest_name) /* for \.{CWEAVE} */ ... @= char buffer[long_buf_size]; /* where each line of input goes */ char *buffer_end=buffer+buf_size-2; /* end of |buffer| */ ... ------------------------------------------------------------------------------- }}} µû¶ó¼­ buf_size¸¦ ÃÖ´ë 4¹è Å©°ÔÇÏ´ø°¡, ¾Æ´Ï¸é, buffer_end¸¦ Á¤ÀÇÇÏ´Â ºÎºÐ¿¡ »ç¿ëÇÑ buf_size ´ë½Å¿¡ long_buf_size¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. Àú´Â cwebÀ» ¼³Ä¡ÇÒ¶§, µÎ¹ø° ¹æ¹ýÀ» »ç¿ëÇؼ­ ¼³Ä¡Çؼ­, utf-8·Î µÈ ¹®¼­¸¦ ÄÄÆÄÀÏÇÒ¶§µµ ctangleÀ̳ª cweave°¡ ¹¬¹¬È÷ ±×Àú Á¦ ÇÒ ÀÏÀ» ÇÕ´Ï´Ù. :-) ÀÌ°ÍÀÌ utf-8·Î µÈ ¹®¼­ÀÇ ±Ùº»ÀûÀÎ ÇØ°áÃ¥ÀÎÁö, ÀӽùæÆíÀûÀÎ ¹æ¹ýÀÎÁö´Â ¸ð¸£°ÚÀ¸³ª, °æ°í ¸Þ½ÃÁö¸¦ º¼ ¼ö ¾ø¾î¼­ ÁÁ±â´Â ÇÕ´Ï´Ù. ÀÌ Á¡ ¸»°íµµ, Çѱ۷Πcweb ÇÁ·Î±×·¥À» ¿ÂÀüÈ÷ Çϱâ À§Çؼ­´Â cweave.w, cwebmac.tex ÆÄÀÏ µî ¸î°¡Áö¸¦ ´õ ¼öÁ¤ÇؾßÇÕ´Ï´Ù. À̸¦ À§Çؼ­´Â ÃæºÐÇÑ TeXÀÇ Áö½ÄÀÌ ÇÊ¿äÇѵ¥, ±×·¸Áö ¸øÇÑ Á¦ ÀÚ½ÅÀÌ ¾ÈŸ±î¿ï»ÓÀÔ´Ï´Ù. -- ÀÛÀº³ª¹«