³ª. ¹®¹ý µé¿©¾²±â

¹®¹ý µé¿©¾²±â´Â ÀÔ·ÂµÈ ¹®ÀÚ¿Í ÇöÀç ¼±ÅÃµÈ ºÐ¼®±âÀÇ Á¤º¸¸¦ ÂüÁ¶ÇÏ¿© ¹®¼­¸¦ °¡Àå º¸±â ÁÁ°Ô µé¿©¾²±â ÇÏ´Â ±â´ÉÀÌ´Ù. ¾ÕÂÊ ¹®´ÜÀÇ ¸ð¾ç¸¸ º¸°í ´ÙÀ½ ¹®´ÜÀÇ µé¿©¾²±â¸¦ °áÁ¤ÇÏ´Â ÀÚµ¿ µé¿©¾²±âº¸´Ù´Â ÇÑ ´Ü°è ´õ °í±Þ ±â´ÉÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ÀÌ ±â´Éµµ bAutoIndent ¿É¼ÇÀ¸·Î »ç¿ë ¿©ºÎ¸¦ °áÁ¤Çϴµ¥ µû·Î ¿É¼ÇÀ» µÑ ¼öµµ ÀÖÀ¸³ª ÀÚµ¿ µé¿©¾²±â°¡ ¾ÈµÇ´Â »óȲ¿¡¼­ ¹®¹ý µé¿©¾²±â¸¦ ÇÒ ¼ö´Â ¾ø±â ¶§¹®¿¡ µÎ ±â´ÉÀÇ ¼±Åà ¿©ºÎ¸¦ ÇÑ ¿É¼ÇÀ¸·Î ÅëÇÕÇصξú´Ù.

¹®¹ý µé¿©¾²±â´Â ºÐ¼®±â°¡ Á¤ÀÇÇÏ´Â ºí·Ï ½ÃÀÛ ¹®ÀÚ¿Í ºí·Ï ³¡ ¹®ÀÚ¸¦ ÀνÄÇÏ¿© µé¿©¾²±â¸¦ Á¶Á¤ÇÏ´Â °ÍÀε¥ ÇöÀç ApiEditÀÇ ºÐ¼®±â Áß¿¡ ºí·ÏÀ» Áö¿øÇÏ´Â ¹®¹ýÀº C ¾ð¾î ºÐ¼®±â¹Û¿¡ ¾ø´Ù. ±¸Ã¼ÀûÀ¸·Î ¿¹¸¦ µéÀÚ¸é { ¹®ÀÚ ÈÄ¿¡ ¿£ÅÍÅ°¸¦ Ä¡¸é ÇöÀç ¹®´Üº¸´Ù ÇÑ Ä­ ´õ µé¿©¾²±â¸¦ ÇÏ´Â °ÍÀÌ°í } ¹®ÀÚ¸¦ Ä¡¸é ³»¾î ¾²±â¸¦ ÇÏ´Â °ÍÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ÇöÀç´Â C ¹®¼­¿¡ ´ëÇؼ­¸¸ ÀÌ ±â´ÉÀÌ ÀÛµ¿ÇÏÁö¸¸ ÀÌÈÄ ÆĽºÄ®À̳ª ÀÚ¹Ù ºÐ¼®±â¸¦ Ãß°¡ÇÏ¸é ¶È°°ÀÌ Àû¿ëµÉ ¼ö ÀÖµµ·Ï ÀÛ¼ºÇØ¾ß ÇÑ´Ù.

¾Õ¼­ ÀÛ¼ºÇÑ µé¿©¾²±â º¸Á¶ ÇÔ¼ö Áß ¹®¹ý µé¿©¾²±â¸¦ Áö¿øÇÏ´Â ³ª¸ÓÁö ¼¼ ÇÔ¼öµéÀ» ÀÌÁ¦ ºÐ¼®Çغ¸µµ·Ï ÇÏÀÚ. ¹®¹ýÀÌ °í·ÁµÈ µé¿©¾²±â¸¦ ÇÒ ¶§´Â ¾Õ ¹®´ÜÀÇ µé¿©¾²±â ¹®ÀÚ¿­À» ±×´ë·Î º¸Á¸ÇϱⰡ ¹«Ã´ ¾î·Æ´Ù. À¯È¿ ¾Õ ¹®´Ü¿¡ ÅÇ µÎ °³°¡ ÀÖ°í ´ÙÀ½ ¹®´ÜÀ» ÇÑ Ä­ ´õ µé¿©¾²·Á¸é ÅÇÀ» Çϳª ´õ ´Ã·Á ¼¼ °³¸¦ »ðÀÔÇÏ¸é µÉ °ÍÀÌ´Ù. ±×·¯³ª ¸¸¾à \t----\t-- ÀÌ·± ½ÄÀ¸·Î ÅÇ°ú °ø¹éÀ» ¼¯¾î¼­ µé¿©¾²±â¸¦ Çß´Ù¸é ÀÌ·± Æí¸®ÇÑ ¹æ¹ýÀ¸·Î µé¿©¾²±â¸¦ Á¶Á¤ÇÒ ¼ö ¾ø´Ù.

±×·¡¼­ ÅÇ°ú °ø¹é ¹®ÀÚ¿¡ »ó°ü¾øÀÌ µé¿©¾²±â ·¹º§À» ¼öÄ¡È­ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÇÊ¿äÇѵ¥ ±× ¿ªÇÒÀ» ÇÏ´Â ÇÔ¼ö°¡ GetIndentLevel ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ¹®´Ü ¾ÕÂÊÀÇ °ø¹é ¹®ÀÚ µé¿©¾²±â Á¤µµ¸¦ ¼öÄ¡È­Çϴµ¥ Åǹ®ÀÚ´Â TabWidth·Î °è»êÇÏ°í ½ºÆäÀ̽º´Â 1·Î °è»êÇÑ´Ù. Áï ¼öÄ¡È­ÀÇ ´ÜÀ§´Â ½ºÆäÀ̽º ´ÜÀ§ÀÌ´Ù. µé¿©¾²±â ·¹º§À» ¼öÄ¡È­ÇØ¾ß ÇÑ Ä­ ´õ µé¿©¾²°Å³ª ³»¾î¾²±â¸¦ ÇÒ ¶§ ¾ó¸¶¸¸Å­ µé¿©¾µ °ÍÀΰ¡¸¦ Á¤È®ÇÏ°Ô °è»êÇÒ ¼ö ÀÖ´Ù.

MakeIndentString ÇÔ¼ö´Â µé¿©¾²±â ·¹º§À» ¼öÄ¡·Î Àü´Þ¹Þ¾Æ ÀÌ ¼öÄ¡¸¸Å­ÀÇ µé¿©¾²±â ¹®ÀÚ¿­À» ¸¸µéµÇ bSpaceForTab ¿É¼Ç¿¡ µû¶ó µé¿©¾²±â ¹®ÀÚ¿­À» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀÌ ´Þ¶óÁø´Ù. ÅÇ ´ë½Å °ø¹é ¹®ÀÚ¸¦ »ç¿ëÇÑ´Ù¸é µé¿©¾²±â ¹®ÀÚ¿­À» °ø¹éÀ¸·Î ÀÛ¼ºÇÏ°í ±×·¸Áö ¾Ê´Ù¸é Åǹ®ÀÚ¸¸À¸·Î µé¿©¾²±â ¹®ÀÚ¿­À» ¸¸µé¾î ³½´Ù. GetIndentLevelÀº Á¤È®ÇÑ Á¶»ç¸¦ À§ÇØ °ø¹é ´ÜÀ§·Î µé¿©¾²±â ·¹º§À» Á¶»çÇÏ´Â ¹Ý¸é MakeIndentStringÀº ÅÇ ´ÜÀ§¸¦ »ç¿ëÇϴµ¥ ¾îÂ÷ÇÇ ¹®¹ý µé¿©¾²±â´Â Åǹ®ÀÚ ÆøÀÇ ¹è¼ö¸¸Å­¸¸ µé¿©¾²±â¿Í ³»¾î¾²±â¸¦ Çϱ⠶§¹®ÀÌ´Ù.

IsPrevParaBlockOpen ÇÔ¼ö´Â À¯È¿ ¾Õ ¹®´ÜÀÇ ³¡ÀÌ ºí·Ï ½ÃÀÛ ¹®ÀÚ¿­ÀÎÁö Á¶»çÇÑ´Ù. C ¾ð¾î¶ó¸é ¡®{¡¯°¡ ºí·Ï ½ÃÀÛ ¹®ÀÚ°¡ µÇ°í ÆĽºÄ®À̶ó¸é ¡®begin¡¯ÀÌ µÉ °ÍÀÌ´Ù. ÇöÀç ¼±ÅÃµÈ ºÐ¼®±âÀÇ GetInfo(5) ÇÔ¼ö¸¦ È£ÃâÇÏ¸é ºí·Ï ½ÃÀÛ ¹®ÀÚ¿­À» ±¸ÇÒ ¼ö Àִµ¥ ÀÌ ¹®ÀÚ¿­ÀÌ Á¤ÀǵǾî ÀÖÁö ¾Ê´Ù¸é ¹®¹ý µé¿©¾²±â¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. À¯È¿ ¾Õ ¹®´ÜÀÇ À¯È¿ ¸¶Áö¸· ¹®ÀÚ À§Ä¡¸¦ ±¸ÇÑ ÈÄ ÀÌ ¹®ÀÚ¿­ÀÌ ºÐ¼®±âÀÇ ºí·Ï ½ÃÀÛ ¹®ÀÚ¿­ÀÎÁö ºñ±³ÇÏ¿© ±× °á°ú¸¦ ¸®ÅÏÇß´Ù.

ÀÌ º¸Á¶ ÇÔ¼öµéÀÇ µµ¿òÀ» ¹ÞÀ¸¸é ¹®¹ý µé¿©¾²±âµµ ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ¸ÕÀú { ¹®ÀÚ ÈÄ¿¡ <Enter>Å°·Î °³ÇàÇÒ ¶§ ÇÑ Ä­ ´õ µé¿©¾²±â ÇÏ´Â Äڵ带 ÀÛ¼ºÇغ¸°í ÀÌ Äڵ尡 ¾î¶»°Ô ¹®¹ý µé¿©¾²±â¸¦ ÇÏ´ÂÁö ºÐ¼®Çغ¸ÀÚ. ProcessIndent ÇÔ¼ö¿¡ ´ÙÀ½ Äڵ带 Ãß°¡ÇÑ´Ù. ±æÀ̴ ªÁö¸¸ ¾ÆÁÖ ÇÔÃàÀûÀ¸·Î ÀÛ¼ºµÇ¾î ÀÖ´Ù.

 

¨ç

void CApiEdit::ProcessIndent(TCHAR ch)

{

     TCHAR szIndent[4096];

     int toff;

¨è

     if (ch == ¡®\r¡¯) {

        if (IsPrevParaBlockOpen(off)) {           ¨é

           MakeIndentString(1,szIndent,4096);

        } else {

           lstrcpy(szIndent,"");

        }

 

        GetIndentString(GetPrevPara(off),szIndent+lstrlen(szIndent),              ¨ê

           4096-lstrlen(szIndent));

 

          StartUndoGroup();

          toff=off;

          while (AeIsWhiteSpace(buf[toff]) && !AeIsLineEnd(buf[toff])) toff++;

          if (toff != off) {

              Delete(off,toff-off);

          }

 

          if (lstrlen(szIndent)) {

              Insert(off,szIndent);      ¨ë

              off+=lstrlen(szIndent);

          }

          EndUndoGroup();

     }

}

 

ÄÚµåÀÇ °¢ ºÎºÐ¿¡ ºÙ¿©Áø ¹øÈ£´Â ºÐ¼®ÀÇ ÆíÀÇ»ó ºÙ¿© ³õÀº °ÍÀÌ´Ù. ´ÙÀ½ ±×¸²Àº ¼Ò½ºÀÇ °¢ ¹øÈ£¿¡¼­ ¹®¼­°¡ ¾î¶»°Ô 󸮵ǴÂÁö¸¦ ±×¸° °ÍÀε¥ ÄÚµåÀÇ È帧°ú Àß ºñ±³ÇØ °¡¸é¼­ º¸¸é ÀÌÇØÇϱ⠽¬¿ï °ÍÀÌ´Ù.

¨ç ¾Õ ¹®´ÜÀÇ ³¡¿¡ ij·µÀÌ ÀÖ´Â »óÅÂÀÌ´Ù. ÀÌ ¹®´ÜÀÇ ³¡ ¹®ÀÚ°¡ ºí·Ï ³¡ ¹®ÀÚÀÎ { À̹ǷΠ¹®¹ý µé¿©¾²±â¸¦ Çϱâ Á÷ÀüÀÇ ¸ð½ÀÀÌ´Ù. ¾ÆÁ÷ <Enter>Å°¸¦ ´©¸¥ °ÍÀÌ ¾Æ´Ï¹Ç·Î OnCharµµ È£ÃâµÇÁö ¾Ê¾ÒÀ¸¸ç ProcessIndent ÇÔ¼öµµ È£ÃâµÇ±â ÀüÀÇ ¸ð½ÀÀÌ´Ù.

¨è <Enter>Å°¸¦ ´©¸£¸é OnChar¿¡¼­ °³ÇàÄڵ带 ¹®¼­¿¡ »ðÀÔÇϸç ij·µÀÌ ´ÙÀ½ ÁÙÀÇ Ã³À½À¸·Î À̵¿ÇÑ´Ù. ÀÌ ½ÃÁ¡¿¡¼­ OnChar°¡ ProcessIndent ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ProcessIndent ÇÔ¼ö´Â ÀÌ »óÅ¿¡¼­ ¹®¼­ÀÇ »óȲÀ» ÆÇ´ÜÇؼ­ ÀÚµ¿ µé¿©¾²±â¿Í ¹®¹ý µé¿©¾²±â¸¦ °°ÀÌ Ã³¸®ÇØ¾ß ÇÑ´Ù.

¨é ÀÔ·ÂµÈ Å°°¡ °³ÇàÄÚµåÀ̹ǷΠif (ch==¡®\r¡¯) Á¶°ÇÀÌ ¼º¸³ÇÑ´Ù. À¯È¿ ¾Õ ¹®´ÜÀÇ ³¡ÀÌ { ÀÎÁö °Ë»çÇÑ´Ù. ¾Õ ¹®´Ü¿¡¼­ { ´ÙÀ½¿¡ <Enter>¸¦ ´­·¶À¸¹Ç·Î ÀÌ Á¶°ÇÀÌ ¸¸Á·µÇ¸ç MakeIndentString ÇÔ¼ö¿¡ ÀÇÇØ Åǹ®ÀÚ ÇϳªºÐÀÇ µé¿©¾²±â ¹®ÀÚ¿­ÀÌ szIndent¿¡ ÀÛ¼ºµÈ´Ù. ¿©±â¼­ ÀÛ¼ºµÈ Åǹ®ÀÚ Çϳª´Â ÀÌÀü ¹®´Üº¸´Ù ÇÑ Ä­ ´õ µé¿©¾´´Ù´Â ÀǹÌÀ̸ç ÀÌ Äڵ忡 ÀÇÇØ ¹®¹ý µé¿©¾²±â°¡ ±¸ÇöµÈ´Ù.

¨ê ÀÚµ¿ µé¿©¾²±â¸¦ À§ÇØ À¯È¿ ¾Õ ¹®´ÜÀÇ µé¿©¾²±â ¹®ÀÚ¿­À» Á¶»çÇ쵂 szIndent¿¡ ÀÌ¹Ì ÀÛ¼ºµÈ ¹®ÀÚ¿­À» À¯ÁöÇÏ°í ±× µÞºÎºÐ¿¡ Á¶»çÇÔÀ¸·Î½á ¹®¹ý µé¿©¾²±âµÈ ºÎºÐÀ» º¸Á¸ÇÑ Ã¤·Î ÀÚµ¿ µé¿©¾²±â ¹®ÀÚ¿­À» µ¡ºÙÀδÙ. szIndent¿¡´Â Åǹ®ÀÚ µÎ °³°¡ µé¾î°¡´Âµ¥ °¢ ÅÇÀÇ Àǹ̴ ºÐ¸íÈ÷ ´Ù¸£´Ù. ¾ÕÂÊÀÇ ÅÇÀº ¹®¹ý µé¿©¾²±â¿¡ ÀÇÇØ Ãß°¡µÈ °ÍÀÌ°í µÚÂÊÀÇ ÅÇÀº ÀÚµ¿ µé¿©¾²±â¿¡ ÀÇÇØ Ãß°¡µÈ °ÍÀÌ´Ù.

¨ë »õ ¹®´ÜÀÇ ¾ÕºÎºÐ¿¡ szIndentÀÇ Åǹ®ÀÚ µÎ °³°¡ »ðÀԵǰí ij·µÀº ±× µÚÂÊÀ¸·Î À̵¿µÈ´Ù. ¸ðµç 󸮰¡ ¿Ï·áµÇ¾ú´Ù.

 

ÀÌ ÄÚµå´Â ¾ÆÁÖ ÂªÁö¸¸ ±²ÀåÈ÷ ¸¹Àº ¿¹¿Ü »óȲÀ» ó¸®ÇÏ°í ÀÖ´Ù. ÅÇ°ú °ø¹éÀÌ ¼¯¿© À־ »ó°ü¾øÀ¸¸ç ¾Õ ¹®´ÜÀÇ µé¿©¾²±â ¹®ÀÚ¿­Àº °¡±ÞÀû º¸Á¸Çϵµ·Ï µÇ¾î ÀÖ°í bSpaceForTab ¿É¼Çµµ Á¦´ë·Î Àû¿ëÇÏ°í ÀÖÀ¸¸ç ¹®¹ý µé¿©¾²±â¿Í ÀÚµ¿ µé¿©¾²±âÀÇ Ãæµ¹µµ ÇؼÒÇÏ°í ÀÖ´Ù. Àß ºÐ¼®ÀÌ µÇÁö ¾ÊÀ¸¸é ´Ù¾çÇÑ ¿¹¹®À» ÀÔ·ÂÇغ¸¸é¼­ µð¹ö°Å¸¦ µ¹·Á º¸±â ¹Ù¶õ´Ù. ƯÈ÷ szIndent°¡ ¾î¶»°Ô º¯ÇÏ´ÂÁö¸¦ Àß °üÂûÇغ¸¾Æ¶ó.

´ÙÀ½Àº ¹®¹ý ³»¾î¾²±â¸¦ ±¸ÇöÇغ¸ÀÚ. ¹®¹ý µé¿©¾²±â´Â { ´ÙÀ½¿¡ ÇÑ Ä­ ´õ µé¿©¾²±â¸¦ ÇÏ´Â °ÍÀÌ°í ¹®¹ý ³»¾î¾²±â´Â } °¡ ÀԷµǴ Áï½Ã ¾Õ ¹®´Üº¸´Ù ÇÑ Ä­ ¾ÕÂÊÀ¸·Î µé¿©¾²´Â ±â´ÉÀÌ´Ù. µÎ ±â´ÉÀÌ °°ÀÌ ±¸ÇöµÇ¾î¾ß ¼Ò½º°¡ Á¦´ë·Î ºí·ÏÀ» ±¸¼ºÇÒ ¼ö ÀÖÀ¸¸ç »ç¿ëÀÚµéÀº µé¿©¾²±â¿¡ ½Å°æ¾²Áö ¾Ê°í ¼Ò½º¸¸ ÀÔ·ÂÇÏ¸é µÈ´Ù.

ÀÌ ±â´Éµµ ¿ª½Ã ProcessIndent ÇÔ¼ö°¡ ó¸®ÇÑ´Ù. À̹ø¿¡´Â Äڵ尡 Á» ±æ´Ù.

 

void CApiEdit::ProcessIndent(TCHAR ch)

{

     TCHAR szIndent[4096];

     int toff;

    int tlen;

    BOOL bAllSpace;

    int nTab;

 

     if (ch == ¡®\r¡¯) {

          ....

     }

 

     tlen=lstrlen(Parser->GetInfo(6));

     if (ch!=¡®\r¡¯ && tlen && off >= tlen) {

          toff=off-tlen;

          if (_strnicmp(buf+toff,Parser->GetInfo(6),tlen)==0) {

              for (;;) {

                   toff--;

                   if (buf[toff] == ¡®\n¡¯ || toff==0) {

                        bAllSpace=TRUE;

                        break;

                   }

                   if (!AeIsWhiteSpace(buf[toff])) {

                        bAllSpace=FALSE;

                        break;

                   }

              }

 

              if (bAllSpace) {

                   GetIndentString(GetPrevPara(off),szIndent,4096);

 

                   nTab=GetIndentLevel(szIndent)/TabWidth;

 

                   if (!IsPrevParaBlockOpen(off)) {

                        nTab=max(0,nTab-1);

                   }

 

                   MakeIndentString(nTab, szIndent,4096);

 

                   toff=FindParaStart(off);

                   StartUndoGroup();

                   Delete(toff,off-toff-tlen);

                   if (lstrlen(szIndent)) {

                        Insert(toff,szIndent);

                   }

                   EndUndoGroup();

 

                   off=off-(off-toff-tlen)+lstrlen(szIndent);

              }

          }

     }

}

 

¹®¹ý ³»¾î¾²±â¸¦ ÇØ¾ß ÇÒ Á¶°ÇÀº 3°¡Áö°¡ ÀÖ´Ù. ÀÌ 3°¡Áö Áß Çϳª¶óµµ ¸¸Á·µÇÁö ¾ÊÀ¸¸é ¹®¹ý ³»¾î¾²±â°¡ ºÒ°¡´ÉÇϰųª ¾Æ´Ï¸é ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

 

¨ç ¿ì¼± ºÐ¼®±â°¡ ºí·Ï ´Ý±â ¹®ÀÚ¿­À» Á¤ÀÇÇØ¾ß ÇÑ´Ù. ÀÏ¹Ý ÅؽºÆ®³ª SQL ¹®¹ý°°ÀÌ µé¿©¾²±â¸¦ ÇÏÁö ¾Ê´Â ¹®¼­´Â ¹®¹ý µé¿©¾²±â¿Í ¹®¹ý ³»¾î¾²±â ¸ðµÎ¸¦ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

¨è ÀÔ·ÂµÈ ¹®ÀÚ¿­ÀÌ ºí·Ï ´Ý±â ¹®ÀÚ¿­À̾î¾ß ÇÑ´Ù. ºí·Ï ´Ý±â ¹®ÀÚ°¡ ¾Æ´Ï¶ó ¹®ÀÚ¿­À̶ó´Â Á¡À» À¯ÀÇÇϵµ·Ï ÇÏÀÚ. C ¾ð¾î´Â } ¹®ÀÚ Çϳª·Î ºí·Ï ´Ý±â¸¦ ÇÏÁö¸¸ ÆĽºÄ® °°Àº °æ¿ì´Â end¹®ÀÚ¿­·Î ºí·ÏÀ» ´Ý±â ¶§¹®¿¡ ¹æ±Ý ÀÔ·ÂµÈ ¹®ÀÚ Çϳª¸¸ º¸°í´Â ºí·ÏÀ» ´Ý¾Æ¾ß ÇÒ ¶§ÀÎÁö ÆÇ´ÜÇÒ ¼ö ¾ø´Ù. ±×·¡¼­ ºí·Ï ´Ý±â ¹®ÀÚ¿­ÀÇ ±æÀ̸¸Å­ ¾ÕÂÊÀ¸·Î À̵¿ÇÑ ÈÄ ºí·Ï ´Ý±â ¹®ÀÚ¿­ÀÌ ¿ÏÀüÈ÷ ÀԷµǾú´ÂÁö ¹®ÀÚ¿­ ºñ±³¸¦ ÇØ ºÁ¾ß ÇÑ´Ù.

¨é ºí·Ï ´Ý±â ¹®ÀÚ¿­ÀÌ ÀԷµǾú´õ¶óµµ ÀÌ ¹®ÀÚ¿­ ¾ÕÂÊÀÌ ¸ðµÎ °ø¹éÀ̾î¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î while (*p) { ¾î¼°í Àú¼°í } ¿¡¼­ Á¦ÀÏ ³¡¿¡ ºí·Ï ´Ý±â ¹®ÀÚ¿­ÀÌ ÀԷµǾú´õ¶óµµ À̶§´Â ³»¾î¾²±â¸¦ ÇÒ ¶§°¡ ¾Æ´Ï´Ù. } ¾Õ¿¡ ´Ù¸¥ ¹®ÀÚ°¡ ÀÖ´Ù´Â ¸»Àº ÀÌ ÁÙÀÌ ¾ÆÁ÷ ºí·Ï ¾ÈÀ̶ó´Â ¶æÀ̱⠶§¹®ÀÌ´Ù. ±×·¯³ª } µÚÂÊ¿¡ ´Ù¸¥ ¹®ÀÚ¿­, ¿¹¸¦ µé¾î ÁÖ¼®ÀÌ Àִٰųª ÇÒ ¶§´Â ³»¾î¾²±â¸¦ ÇØ¾ß ÇÑ´Ù.

ºí·Ï ´Ý±â ¹®ÀÚ¿­ ÀÌÀüÀÌ ¸ðµÎ °ø¹éÀÎÁö´Â Á÷Á¢ ¾ÕÂÊÀ¸·Î À̵¿Çϸ鼭 Á¶»çÇØ ºÁ¾ß ÇÑ´Ù. ºó ÁÙÀÎÁö Á¡°ËÇÏ´Â ¿ëµµ·Î IsParaEmpty¶ó´Â º¸Á¶ ÇÔ¼ö¸¦ ¸¸µé¾î ³õ¾ÒÁö¸¸ ÀÌ ÇÔ¼ö´Â ÁöÁ¤ÇÑ ¹øÁöÀÇ µÚÂʸ¸ °Ë»çÇÒ ¼ö Àֱ⠶§¹®¿¡ ÀÌ °æ¿ì¿¡´Â ½á ¸ÔÀ» ¼ö ¾ø´Ù.

 

ÀÌ ¼¼ °¡Áö Á¶°ÇÀÌ ¸ðµÎ ¸¸Á·µÇ¸é ³»¾î¾²±â¸¦ Çϴµ¥ ¹æ¹ýÀº °£´ÜÇÏ´Ù. À¯È¿ ¾Õ ¹®´ÜÀÇ µé¿©¾²±â ·¹º§À» Á¶»çÇÑ ÈÄ ÅÇ ´ÜÀ§·Î ¹Ù²Û´Ù. À̶§ ³ª´©±â ¿¬»ê¿¡ ÀÇÇØ Àß·Á³ª°¡´Â ¼Ò¼öºÎ´Â ¹«½ÃÇÔÀ¸·Î½á ÅÇ Çϳªº¸´Ù ÀÛÀº °ø¹éÀº ¾ø´Â °ÍÀ¸·Î Ãë±ÞÇÑ´Ù. Á¶»çµÈ ÀÌÀü ¹®´ÜÀÇ µé¿©¾²±â ·¹º§º¸´Ù ÇÑ Ä­ ´õ ÀÛÀº µé¿©¾²±â ¹®ÀÚ¿­À» szIndent ¹öÆÛ¿¡ ÀÛ¼ºÇÏ°í ÀÌ ¹öÆÛ¸¦ ¹®´Ü ¾ÕÀÇ °ø¹é°ú ¹Ù²ãÄ¡±â ÇÏ¸é ³»¾î¾²±â°¡ ¿Ï·áµÈ´Ù.

À¯È¿ ¾Õ ¹®´ÜÀÌ µÎ Ä­ µé¿©¾²±â µÇ¾î ÀÖ´Ù¸é »õ ¹®´ÜÀº ÇÑ Ä­¸¸ µé¿©¾²¸é µÉ °ÍÀÌ´Ù. ÀÌ °úÁ¤¿¡¼­ ÅÇ°ú °ø¹éÀ¸·Î µÚ¼¯ÀÎ µé¿©¾²±â ¹®ÀÚ¿­Àº MakeIndentString ÇÔ¼ö¿¡ ÀÇÇØ bSpaceForTab ¿É¼ÇÀÌ ÁöÁ¤ÇÏ´Â ´ë·Î ±ò²ûÇÏ°Ô Á¤¸®µÈ´Ù.

¹®¹ý ³»¾î¾²±â´Â À¯È¿ ¾Õ ¹®´Üº¸´Ù ÇÑ Ä­ ÀÛ°Ô µé¿©¾²´Âµ¥ ¿¹¿Ü°¡ ÇÑ °¡Áö ÀÖ´Ù. ºí·ÏÀ» ¿­¾ú´Ù°¡ ¹Ù·Î ´Ý´Â °æ¿ì¿¡´Â ³»¾î¾²±â¸¦ ÇÏÁö ¾Ê´Â´Ù. Á¤È®ÇÏ°Ô Ç¥ÇöÇÏÀÚ¸é ³»¾î¾²±â¸¦ Çϱâ´Â Ç쵂 ÂüÁ¶ÇÏ´Â ¹®´ÜÀÌ ´Ù¸£´Ù. ¹®¹ýÀûÀ¸·Î ºó ºí·ÏÀ» ¸¸µé ÇÊ¿ä´Â ¾øÁö¸¸ ÄÚµù ½À°ü»ó ºí·ÏÀ» ¸ÕÀú ¸¸µé¾î ³õ°í ºí·Ï ¾ÈÀÇ Äڵ带 ÀÛ¼ºÇÏ´Â °æ¿ì°¡ ¸¹±â ¶§¹®¿¡ ÀϽÃÀûÀÎ ºó ºí·ÏÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î switch ¹®À» ÀÛ¼ºÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ switch¹® ÀÚü¸¦ ¸ÕÀú ¸¸µé°í ³­ ÈÄ¿¡ ºí·Ï ¾È¿¡ case¸¦ Ãß°¡ÇÏ´Â °ÍÀÌ º¸ÅëÀÌ´Ù.

 

switch (i)

{

}

 

À̶§ÀÇ ºí·Ï ´Ý±â´Â ³»¾î¾²±â ´ë»óÀÌ ¾Æ´Ñµ¥ ¿Ö³ÄÇÏ¸é ¾ÆÁ÷ µé¿©¾²±â¸¦ ÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. switch ºí·Ï¿¡ case¹®À» ÀÛ¼ºÇÏ´Ù°¡ ºí·ÏÀ» ´Ý´Â´Ù¸é case°¡ ¹ú½á µé¿©¾²±âµÇ¾ú±â ¶§¹®¿¡ case ¹®´ÜÀ» ±âÁØÀ¸·Î ³»¾î¾²±â¸¦ ÇÏ¸é µÈ´Ù. ±×·¯³ª ºó ºí·ÏÀÇ °æ¿ì´Â ºí·Ï ¿­±â ¹®ÀÚ¿­¿¡ ÀÇÇØ µé¿©¾²±â°¡ µÇ±ä ÇßÁö¸¸ ºí·ÏÀÇ ³»¿ë¾øÀÌ ¹Ù·Î ´ÝÇûÀ¸¹Ç·Î À¯È¿ ¾Õ ¹®´Üº¸´Ù ÇÑ Ä­ ´ú µé¿©¾²´Â °ÍÀÌ ¾Æ´Ï¶ó ¶È°°ÀÌ µé¿©¾²±â ÇØ¾ß ÇÑ´Ù. ±×·¡¼­ À¯È¿ ¾Õ ¹®´ÜÀÌ ºí·ÏÀÇ ½ÃÀÛÀ̾úÀ¸¸é Á¶»çµÈ ÅÇ ´ÜÀ§¸¦ ±×´ë·Î Á¤¸®¸¸ Çؼ­ ´Ù½Ã ½á ÁÖ¾ú´Ù.