´Ù. ÇÑ ÁÙ ºÐ¼®

C ¾ð¾î ºÐ¼®±âÀÇ ½ÇÁúÀûÀÎ ¸ÞÀÎ ÇÔ¼ö´Â ÇÑ ÁÙÀ» ºÐ¼®ÇÏ´Â ParseLine ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ºÐ¼® ´ë»óÀÌ µÇ´Â ÁÙ¹øÈ£¸¦ nLine Àμö·Î Àü´Þ¹ÞÀ¸¸ç ±× ÁÙÀ» ºÐ¼®ÇÏ¿© pInfo[nLine]¿¡ ºÐ¼®°á°ú¸¦ ÀúÀåÇÑ´Ù. ÀÌ ÇÔ¼ö°¡ È£ÃâµÇ±â Àü¿¡ ParseLines ÇÔ¼ö¿¡¼­ ÀÌ¹Ì ¹è¿­À» ÀçÇÒ´çÇسõ¾ÒÀ¸¹Ç·Î pInfo[nLine]Àº ¹Ýµå½Ã Á¸ÀçÇÏ¸ç ¶ÇÇÑ ¾Õ ÁÙºÎÅÍ ¼ø¼­´ë·Î ºÐ¼®ÇϹǷΠnLineÀÇ ¹Ù·Î ¾Õ ÁÙÀº ÀÌ¹Ì ºÐ¼®ÀÌ ¿Ï·áµÇ¾î ÀÖ´Â »óÅÂÀÌ´Ù.

ÀÌ ÇÔ¼öÀÇ ÀüüÀûÀÎ È帧Àº ÇöÀç ºÐ¼® »óÅ¿¡ ÇØ´çÇÏ´Â ÄÁÅؽºÆ®¿¡ ÀÇÇØ ÅëÁ¦µÈ´Ù. Context Áö¿ªº¯¼ö´Â ÃÖÃÊ ÀÌÀü ÁÙÀÇ ÄÁÅؽºÆ®°ªÀ¸·Î ÃʱâÈ­µÇ¸ç ÀÌÀü ÁÙÀÌ ¾ø´Â ù ÁÙÀÇ °æ¿ì´Â NORMAL ÄÁÅؽºÆ®·Î ÃʱâÈ­µÈ´Ù. ÄÁÅؽºÆ®°ªÀ» Á¶»çÇÑ ÈÄ Ã¹ ¹ø° À¯´Ö¿¡ ÀÌ ÄÁÅؽºÆ®ÀÇ ½ºÅ¸ÀÏÀ» ¸ÕÀú ±â·ÏÇÑ´Ù. ÀÌÀü ÁÙÀÌ º° ÄÁÅؽºÆ®¾øÀÌ ºÐ¼®µÇ¾úÀ¸¸é ÇöÀç ÁÙÀÇ Ã¹ À¯´Ö¿¡ NORMAL ½ºÅ¸ÀÏÀÌ ±â·ÏµÇ°í ÀÌÀü ÁÙÀÌ ºí·Ï ÁÖ¼®À¸·Î ³¡ÀÌ ³µÀ¸¸é ÇöÀç ÁÙÀÇ Ã¹ À¯´Öµµ °è¼ÓÇؼ­ ÁÖ¼®ÀÌ µÈ´Ù.

ÇÑ ÁÙ ÁÖ¼® ÄÁÅؽºÆ®´Â Á¶±Ý Ưº°ÇÏ°Ô °ü¸®µÇ´Âµ¥ ÀÌÀü ÁÙÀÌ ÇÑ ÁÙ ÁÖ¼®ÀÎ °æ¿ì ÇöÀç ÁÙÀº ´ÙÀ½ µÎ °¡Áö ¹æ¹ýÀ¸·Î Çؼ®µÉ ¼ö ÀÖ´Ù.

 

int var; // Á¤¼öÇü º¯¼ö¸¦ ¼±¾ð

TCHAR ch;

int var; // Á¤¼öÇü

º¯¼ö¸¦ ¼±¾ð

TCHAR ch;

 

¿ÞÂÊÀÇ °æ¿ì ÇÑ ÁÙ ÁÖ¼®ÀÌ ±×¾ß¸»·Î ±× ÁÙ¿¡¼­ ¿ÏÀüÈ÷ ³¡ÀÌ ³­ °æ¿ìÀÌ´Ù. ÀÌ °æ¿ì TCHAR ch; ÁÙÀº »õ·Î¿î ¹®´ÜÀ̹ǷΠù ¹ø° À¯´ÖÀ¸·Î ³ë¸» ½ºÅ¸ÀÏÀ» ±â·ÏÇÏ°í ³ë¸» ÄÁÅؽºÆ® »óÅ¿¡¼­ ºÐ¼®À» ½ÃÀÛÇÏ¸é µÈ´Ù. ÇÑ ÁÙ ÁÖ¼®Àº ½ÃÀÛµÈ ÁÙ¿¡¼­ ¹Ýµå½Ã ³¡ÀÌ ³ªµµ·Ï Á¤ÀǵǾî Àֱ⠶§¹®ÀÌ´Ù.

¿À¸¥ÂÊÀÇ °æ¿ì ÀÚµ¿°³Çà¿¡ ÀÇÇØ ÇÑ ÁÙ ÁÖ¼®ÀÌ ±× ÁÙ¿¡¼­ ³¡³ªÁö ¸øÇÏ°í ´ÙÀ½ ÁÙ·Î À̾îÁ³´Ù. ÀÚµ¿°³Çà ±â´ÉÀÌ ¾ø´Ù¸é ÀÌ·± °æ¿ì´Â ¹ß»ýÇÒ ¼ö°¡ ¾ø´Ù. ÀÌ °æ¿ì ù ¹ø° ÁÙ°ú µÎ ¹ø° ÁÙÀº È­¸é»ó¿¡ µÎ ÁÙ·Î ³ªÅ¸³µÁö¸¸ »ç½ÇÀº °°Àº ¹®´Ü¿¡ ¼ÓÇØ ÀÖÀ¸¸ç µÎ ¹ø° ÁÙµµ ÁÖ¼®ÀÌ °è¼ÓµÇ°í ÀÖ´Â ÁßÀÌ´Ù. ae.pLine[nLine].nLineÀÌ 0ÀÌ ¾Æ´Ï¶ó´Â Á¶°ÇÀº ¹®´ÜÀÇ Ã¹ ÁÙÀÌ ¾Æ´Ï¶ó´Â ¶æÀÌ´Ù.

ÀÌÀü ÁÙÀÇ ÄÁÅؽºÆ®°¡ ÇÑ ÁÙ ÁÖ¼®ÀÌ°í ÇöÀç ÁÙÀÌ ÀÌÀü ÁÙÀÇ ¿¬¼ÓµÈ ¹®´ÜÀ̶ó¸é ÇöÀç ÁÙÀº ´õ ºÐ¼®ÇØ º¼ ÇÊ¿äµµ ¾øÀÌ Àüü°¡ ÁÖ¼® ½ºÅ¸ÀÏÀÌ´Ù. ±×·¡¼­ ù ¹ø° À¯´Ö¿¡ ÁÖ¼® ½ºÅ¸ÀÏÀ» ±â·ÏÇÑ ÈÄ ´õ ºÐ¼®ÇÏÁö ¾Ê°í EndParse·Î °£´Ù. EndParse´Â ´ÙÀ½ ÁÙÀ» À§ÇØ Context °ªÀ» pInfo¿¡ ±â·ÏÇÏ°í ÇÑ ÁÙ¿¡ ´ëÇÑ ºÐ¼®À» ¸¶Ä£´Ù.

ù À¯´ÖÀ» ÀÛ¼ºÇÑ ÈÄ ¹öÆÛÀÇ Ã³À½(s)ºÎÅÍ ³¡(e-1)±îÁö ÇÑ ¹®ÀÚ¾¿ Àо¸ç ±¸¹®À» ºÐ¼®Çϴµ¥ ºÐ¼®ÇÏ´Â ¹æ¹ýÀº ÇöÀç ÄÁÅؽºÆ®¿¡ µû¶ó ´Þ¶óÁø´Ù. ±×·¡¼­ ºÐ¼® ·çƾÀº Context º¯¼ö¿¡ µû¸¥ switch¹®À¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ÇÑ ÁÙ ÁÖ¼® ÄÁÅؽºÆ®´Â ÀÌ¹Ì ¾Õ¿¡¼­ ó¸®ÇßÀ¸¹Ç·Î switch ¹®¿¡´Â ³ªÅ¸³ªÁö ¾Ê´Â´Ù. °¢ ÄÁÅؽºÆ®º°·Î ºÐ¼®Çغ¸ÀÚ.

³ë¸» ÄÁÅؽºÆ®

ÀÌ »óÅ´ ÀÏ¹Ý ¹®ÀÚ¿­À» Àаí ÀÖ´Â ÁßÀ̹ǷΠ¸ðµç ½ºÅ¸ÀÏÀÌ ³ªÅ¸³¯ ¼ö ÀÖ´Ù. case CPP_CON_NORMAL ºí·Ï¿¡¼­ ³ë¸» ÄÁÅؽºÆ®ÀÏ ¶§ÀÇ ºÐ¼®À» ó¸®ÇÑ´Ù. ¹öÆÛÀÇ ¹®ÀÚµéÀ» ¼ø¼­´ë·Î Àо¸ç ƯÁ¤ ½ºÅ¸ÀÏÀÌ ³ªÅ¸³ª´ÂÁö Á¶»çÇÑ´Ù. ½ºÅ¸ÀÏ Á¶»ç¿Í ½ºÅ¸ÀÏ ±â·Ï ·çƾÀÌ µÎ ºÎºÐÀ¸·Î ³ª´©¾îÁ® ÀÖÀ¸¸ç Áß°£¿¡ ¹®ÀÚ¿­ Á¡°Ë ·çƾÀÌ »ðÀԵǾî ÀÖ´Ù. ½ºÅ¸ÀÏÀ» ãÀº Áï½Ã ºÐ¼® Á¤º¸¸¦ ±â·ÏÇÏÁö ¾Ê´Â ÀÌÀ¯´Â °¢ ½ºÅ¸ÀÏ ÀÌÀü¿¡ ÀÐÀº ¹®ÀÚ¿­ÀÌ Å°¿öµå³ª Àü󸮱âÀÎÁö È®ÀÎÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù.

¿¹¸¦ µé¾î void"string"À̶ó´Â ¹®ÀÚ¿­ÀÌ ÀÖÀ» ¶§ "¿¡ ÀÇÇØ ¹®ÀÚ¿­ ÄÁÅؽºÆ®°¡ ½ÃÀ۵Ǵµ¥ ±× Àü¿¡ ¾ÕÂÊ¿¡ ÀÖ´Â void°¡ Å°¿öµå°¡ ¸Â´ÂÁö¸¦ ¸ÕÀú È®ÀÎÇÑ ÈÄ ¹®ÀÚ¿­ ÄÁÅؽºÆ®¸¦ ±â·ÏÇØ¾ß ÇÑ´Ù. °¢ ½ºÅ¸ÀÏÀ» ½ÃÀÛÇÏ´Â ¹®ÀÚ ÁýÇÕÀ» Á¡°ËÇϴµ¥ ºí·Ï ÁÖ¼®Àº /¿Í *°¡ ¿¬¼ÓÀ¸·Î ¿Ã ¶§ ½ÃÀ۵Ǹç ÇÑ ÁÙ ÁÖ¼®Àº //, ¹®ÀÚ¿­ »ó¼ö´Â ", ¹®ÀÚ »ó¼ö´Â ¡®¿¡ ÀÇÇØ ½ÃÀ۵ȴÙ. ½ºÅ¸ÀÏÀÌ ¹ß°ßµÇ¸é Context¸¦ º¯°æÇÏ¿© ´ÙÀ½ ¹ø for ·çÇÁ¸¦ µ¹ ¶§´Â °Ë»ç ¹æ¹ýÀ» º¯°æÇϵµ·Ï ÇÑ´Ù.

¹®ÀÚ¿­ Á¡°ËÀº ³ë¸» ÄÁÅؽºÆ®¿¡¼­ ÇÑ ¹®ÀÚ¸¦ ÀÐÀ» ¶§¸¶´Ù ¹Ýº¹ÀûÀ¸·Î ÇØ¾ß ÇÑ´Ù. Áö±Ý±îÁö ÀÐÀº ¹®ÀÚ¿­ÀÌ Å°¿öµå³ª ¼ýÀÚ ¶Ç´Â Àü󸮱âÀÏ ¶§´Â ¹ß°ßµÈ ½ºÅ¸ÀÏÀ» ºÐ¼® Á¤º¸¿¡ ±â·ÏÇϴµ¥ ÀÌ ·çƾ¿¡ ´ëÇؼ­´Â Àá½Ã ÈÄ µû·Î ¾Ë¾Æ º¸ÀÚ.

¹®ÀÚ¿­ Á¡°Ë ÈÄ º¯°æµÈ ÄÁÅؽºÆ®¿¡ µû¶ó ºÐ¼® Á¤º¸¸¦ ÀÛ¼ºÇÑ´Ù. Context°¡ ¿©ÀüÈ÷ CPP_CON_NORMALÀÌ¸é ¾Æ¹«·± ½ºÅ¸ÀÏÀÌ ¹ß°ßµÇÁö ¾Ê¾ÒÀ¸¹Ç·Î ·çÇÁ óÀ½À¸·Î µ¹¾Æ°¡ ºÐ¼®À» °è¼ÓÇÏ¸ç ±× ¿ÜÀÇ °æ¿ì Áï ´Ù¸¥ ÄÁÅؽºÆ®·Î ¹Ù²î¾úÀ¸¸é ºÐ¼® Á¤º¸¸¦ ÀÛ¼ºÇÑ´Ù. ¿¹¸¦ µé¾î ºí·Ï ÁÖ¼®ÀÇ ½ÃÀÛ ¹®ÀÚÀÎ /*¿¡ ÀÇÇØ ÄÁÅؽºÆ®°¡ CPP_CON_BLOCKCOMMENT·Î º¯°æµÇ¾î ÀÖ´Ù¸é MakeParseInfo ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ´ÙÀ½ À¯´Ö¿¡ ÁÖ¼® ½ºÅ¸ÀÏÀ» ±â·ÏÇÑ´Ù. ºí·Ï ÁÖ¼®Àº µÎ °³ÀÇ ¹®ÀÚ·Î ½ÃÀ۵ǹǷΠ¹öÆÛ¸¦ ÇÑ Ä­ °Ç³Ê ¶Ù°í ÄÁÅؽºÆ®¸¦ ºí·Ï ÁÖ¼®À¸·Î º¯°æÇÑ ÈÄ continue ¸í·ÉÀ¸·Î ·çÇÁÀÇ ¼±µÎ·Î µ¹¾Æ°¡ °è¼Ó ºÐ¼®Çϵµ·Ï ÇÑ´Ù.

³ë¸» ÄÁÅؽºÆ®¿¡¼­ //¸¦ ¸¸³ª¸é ÇÑ ÁÙ ÁÖ¼®ÀÌ ½ÃÀÛµÈ °ÍÀ̹ǷΠ´ÙÀ½ À¯´Ö¿¡ ÁÖ¼® ½ºÅ¸ÀÏÀ» ±â·ÏÇÑ´Ù. ÇÑ ÁÙ ÁÖ¼®À» ¸¸³ª¸é ±× ÁÙÀÌ ³¡³¯ ¶§±îÁö´Â ´Ù¸¥ ½ºÅ¸ÀÏÀÌ ¿Ã ¼ö ¾øÀ¸¹Ç·Î ´õ ÀÌ»ó ºÐ¼®À» °è¼ÓÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ °æ¿ì EndParse·Î Á¡ÇÁÇÏ¿© ºÐ¼®À» ³¡³»±â¸¸ ÇÏ¸é µÈ´Ù. ¹®ÀÚ¿­ »ó¼ö³ª ¹®ÀÚ »ó¼ö ÄÁÅؽºÆ®·Î º¯°æµÇ¾úÀ¸¸é ÇØ´ç ½ºÅ¸ÀÏÀ» ±â·ÏÇÏ°í ·çÇÁÀÇ ¼±µÎ·Î µ¹¾Æ°¡ ºÐ¼®À» °è¼ÓÇÑ´Ù.

¹®ÀÚ¿­ Á¡°Ë

Å°¿öµå³ª ¼ýÀÚ µîÀÇ ¹®ÀÚ¿­Àº ³ë¸» ÄÁÅؽºÆ® »ó¿¡¼­¸¸ ¿Ã ¼ö ÀÖÀ¸¸ç ¹®ÀÚ Çϳª¸¦ ÀÐÀ» ¶§¸¶´Ù ½ºÅ¸ÀÏÀ» º¯°æÇÒ¸¸ÇÑ ¹®ÀÚ¿­ÀÎÁö Á¡°ËÇÑ´Ù. ¸Å ±ÛÀÚ¸¶´Ù ¹®ÀÚ¿­ Á¡°ËÀ» ÇÏÁö´Â ¾ÊÀ¸¸ç ´ÙÀ½ ¼¼ °¡Áö Á¶°Ç Áß Çϳª°¡ ¸¸Á·ÇÒ ¶§¸¸ Á¡°ËÇÑ´Ù.

 

¨ç ¿ì¼± ÄÁÅؽºÆ®°¡ ³ë¸» »óÅ°¡ ¾Æ´Ñ ´Ù¸¥ °ÍÀ¸·Î ¹Ù²ï °æ¿ìÀÌ´Ù. ÀÏ¹Ý ¹®ÀÚ¿­ÀÌ À̾îÁö´Ù°¡ ÁÖ¼®À̳ª ¹®ÀÚ¿­ÀÌ ½ÃÀ۵Ǿú´Ù¸é ±× ¾ÕÂÊ¿¡¼­ Àоú´ø ¹®ÀÚ¿­À» Á¡°ËÇغ¸¾Æ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ¡®break// stop¡¯ÀÇ °æ¿ì //¿¡ ÀÇÇØ ÇÑ ÁÙ ÁÖ¼® ÄÁÅؽºÆ®°¡ µÇ¾úÀ¸¹Ç·Î //¾ÕÀÇ break°¡ Å°¿öµåÀÎÁö Á¶»çÇØ º»´Ù.

¨è ÇöÀç Àаí ÀÖ´Â À§Ä¡°¡ ±¸ºÐÀÚÀÏ ¶§ÀÌ´Ù. GetInfo(1) ÇÔ¼ö´Â ºÐ¼®±âÀÇ ±¸ºÐÀÚ ¸ñ·ÏÀ» ¸®ÅÏÇϴµ¥ ÇöÀç Àаí ÀÖ´Â ¹®ÀÚ ae.buf[i]°¡ ÀÌ Áß Çϳª¶ó¸é ¹®ÀÚ¿­ Á¡°ËÀ» ÇÒ ¶§ÀÌ´Ù. ¡®int func()¡¯³ª ¡®1234+5678¡¯ÀÇ °æ¿ì °ø¹é°ú + ¹®ÀÚ°¡ ±¸ºÐÀÚÀ̹ǷΠ±¸ºÐÀÚ ÀÌÀüÀÇ int³ª 1234°¡ Å°¿öµå³ª ¼ýÀÚÀÎÁö »ìÆì º¼ ÇÊ¿ä°¡ ÀÖ´Ù.

¨é ÁÙ ³¡ÀÎ °æ¿ìµµ ¹®ÀÚ¿­ Á¡°ËÀ» ÇÑ´Ù. ¡®a=sizeof ( int );¡¯ ¹®ÀÚ¿­ÀÌ ÀÚµ¿°³Çà¿¡ ÀÇÇØ sizeof´ÙÀ½¿¡ °³ÇàµÇ¾î ¹ö·È´Ù¸é ÀÌ ÁÙ ºÐ¼®À» ³¡³»±â Àü¿¡ sizeof°¡ Å°¿öµåÀÎÁö Á¡°ËÇغ¸¾Æ¾ß ÇÑ´Ù.

 

ÀÌ ¼¼ °¡Áö Á¶°Ç Áß Çϳª¶óµµ ¸¸Á·µÇ¸é ¹®ÀÚ¿­ Á¡°ËÀ» ÇÏ°í ±× ¿ÜÀÇ °æ¿ì´Â ¹®ÀÚ¿­ Á¡°ËÀ» ÇÏÁö ¾Ê´Â´Ù. ÇÑ ¹®ÀÚ¸¦ ÀÐÀ» ¶§¸¶´Ù ¹®ÀÚ¿­ Á¡°ËÀ» ÇÒ ¼öµµ ÀÖÁö¸¸ ÀÌ·¸°Ô ÇÏ¸é ¸Å ±ÛÀÚ¸¶´Ù Å°¿öµåÀÎÁö, ¼ýÀÚÀÎÁö¸¦ ºÁ¾ß ÇϹǷΠºÐ¼® ¼Óµµ°¡ ½ÉÇÏ°Ô ´À·ÁÁú °ÍÀÌ´Ù. continue;¶ó´Â ÁÙÀ» ºÐ¼®ÇÏ°í ÀÖ´Ù¸é c,o,n,... ¼øÀ¸·Î for ·çÇÁ¸¦ µµ´Âµ¥ ;À» ¸¸³ª±â Àü¿¡´Â ÀÌ ¹®ÀÚ¿­ÀÌ Å°¿öµåÀÎÁö º¼ ÇÊ¿ä°¡ ¾ø´Â °ÍÀÌ´Ù. ¶ÇÇÑ integer¸¦ ºÐ¼®ÇÒ ¶§ ¸Å ±ÛÀÚ¸¶´Ù Á¡°ËÀ» ÇÑ´Ù¸é ¾ÕÂÊ ¼¼ ±ÛÀÚ int´Â Å°¿öµå·Î, µÚÂÊ 4±ÛÀÚ eger´Â ÀÏ¹Ý ¹®ÀÚ¿­·Î Ʋ¸®°Ô ºÐ¼®ÇÏ°Ô µÈ´Ù.

¹®ÀÚ¿­À» Á¡°ËÇØ¾ß ÇÒ Á¶°ÇÀ̶ó°í ÆÇ´ÜµÇ¸é µµ¿ì¹Ì ÇÔ¼öµéÀ» È£ÃâÇÏ¿© ¹®ÀÚ¿­À» ºÐ¼®ÇØ º»´Ù. ºÐ¼® ´ë»ó ¹®ÀÚ¿­ÀÇ ½ÃÀÛÀ§Ä¡´Â idpos¶ó´Â º¯¼ö°¡ À¯ÁöÇÏ°í ÀÖ´Ù. ÀÌ º¯¼ö´Â ÃÖÃÊ ÁÙÀÇ Ã¹ À§Ä¡(pLine[nLine].Start)·Î ÃʱâÈ­µÇ¸ç ÁÖ¼®, »ó¼ö µîÀÌ ¹ß°ßµÉ ¶§¸¶´Ù ±× ´ÙÀ½ À§Ä¡·Î À̵¿ÇÏ¸ç ´Ü¾î¸¦ °Ë»öÇÑ ÈÄ¿¡µµ °Ë»öÇÑ À§Ä¡ ´ÙÀ½À¸·Î À̵¿ÇÑ´Ù. °Ë»ç ´ë»ó ¹®ÀÚ¿­ÀÇ ³¡ À§Ä¡´Â Áö±Ý Àаí ÀÖ´Â À§Ä¡ ¶Ç´Â ¹Ù·Î ±× ¾Õ À§Ä¡°¡ µÈ´Ù. ÁÙ ³¡ÀÌ°í ±¸ºÐÀÚ°¡ ¾Æ´Ï¸é ·çÇÁÀÇ ÇöÀç À§Ä¡ÀÎ i±îÁö ºÐ¼®ÇÏ°í ±× ¿ÜÀÇ °æ¿ì´Â i-1±îÁö ºÐ¼®ÇÑ´Ù.

ÀÌ Á¶°Ç¹®Àº Á÷°üÀûÀ¸·Î ÀÌÇØÇϱ⠾î·Á¿ì¹Ç·Î ±¸Ã¼ÀûÀÎ ¿¹¸¦ µé¾îº¸¾Ò´Ù. °¢ ¿¹¿¡¼­ break°¡ °Ë»ö ´ë»ó ¹®ÀÚ¿­À̶ó°í ÇÏÀÚ. ù ¹ø°·Î ¹®ÀÚ¿­ Áß°£¿¡¼­ ±¸ºÐÀÚ¸¦ ¸¸³­ °æ¿ìÀÌ´Ù.

ÇöÀç Àаí ÀÖ´Â iÀ§Ä¡°¡ ÁÙ ³¡(e-1)ÀÌ ¾Æ´Ï¹Ç·Î °Ë»ö ´ë»ó ¹®ÀÚ¿­Àº i-1±îÁö, Áï ±¸ºÐÀÚ ¹Ù·Î ¾Õ¹®ÀÚ±îÁö°¡ µÈ´Ù. µÎ ¹ø° ´Ü¾îÀÎ ¡®break¡¯¸¦ °Ë»ö ´ë»ó ¹®ÀÚ¿­·Î Á¤È®ÇÏ°Ô Ã£¾Æ³Â´Ù. µÎ ¹ø°´Â ÁÙ ³¡ÀÎ °æ¿ìÀÌ´Ù.

À̶§´Â ±¸ºÐÀÚ¸¦ ¸¸³­ °ÍÀÌ ¾Æ´Ï¹Ç·Î i-1À§Ä¡±îÁö °Ë»öÀ» Çؼ­´Â ¾ÈµÇ¸ç ÁÙ ³¡ À§Ä¡ÀÎ i±îÁö °Ë»öÇØ¾ß ÇÑ´Ù. ÁÙ ³¡ÀÏ ¶§´Â ¸¶Áö¸· ÀÐÀº ¹®ÀÚ±îÁö°¡ °Ë»ö ´ë»óÀÌ µÇ´Â °ÍÀÌ´Ù. ÁÙ ³¡¿¡´Â º¸Åë °³ÇàÄÚµå¶ó´Â ±¸ºÐÀÚ°¡ ÀÖÁö¸¸ for ·çÇÁ°¡ ÁÙ ³¡±îÁö µ¹Áö ¾Ê°í ¹Ù·Î ±× ¾Õ ¹®ÀÚ±îÁö µ¹±â ¶§¹®¿¡ °³ÇàÄÚµå ±¸ºÐÀÚ´Â ¸¸³ªÁö ¸øÇÑ´Ù. ¶ÇÇÑ ÀÚµ¿°³ÇàµÈ °æ¿ì´Â ±¸ºÐÀÚ ¾øÀÌ ÁÙÀÌ ³¡³¯ ¼ö Àֱ⠶§¹®¿¡ ÀÌ Á¶°ÇÀÌ ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. ´ÙÀ½Àº ÁÙ ³¡¿¡¼­ ±¸ºÐÀÚ¸¦ ¸¸³­ °æ¿ìÀÌ´Ù.

ºñ·Ï ÁÙ ³¡ÀÌÁö¸¸ ¸¶Áö¸· ¹®ÀÚ°¡ ±¸ºÐÀÚÀ̹ǷΠÀÌ ¹®ÀÚ´Â °Ë»ö ´ë»ó¿¡¼­ Á¦¿ÜµÇ¸ç ¹Ù·Î ¾Õ À§Ä¡ÀÎ i-1±îÁö °Ë»öÇØ¾ß ÇÑ´Ù. ÁÙ ³¡ÀÇ ´Ý´Â °ýÈ£´Â °Ë»ö ´ë»ó ¹®ÀÚ¿­¿¡¼­ Á¦¿ÜµÈ´Ù.

if (i==e-1 && !strchr(GetInfo(1),ae.buf[i])) ¹®ÀåÀº ¡®ÁÙ ³¡ÀÌ°í ÇöÀç À§Ä¡°¡ ±¸ºÐÀÚ°¡ ¾Æ´Ï´Ù¡¯¶ó´Â Á¶°ÇÀ» ¸¸µé¾î³½´Ù. Á» ´õ Á¤È®ÇÏ°Ô ÇÏ·Á¸é ÀÌ Á¶°Ç¹®¿¡ ¡®ÄÁÅؽºÆ®°¡ ¿©ÀüÈ÷ ³ë¸»ÀÌ´Ù¡¯¶ó´Â Á¶°Ç¹®µµ ÇÊ¿äÇÏÁö¸¸ ÀÌ Á¶°ÇÀº ÇöÀç À§Ä¡°¡ ±¸ºÐÀÚ°¡ ¾Æ´Ï¶ó´Â Á¶°Ç¿¡ Èí¼öµÇ¹Ç·Î ¿©±â¼­´Â ÇÊ¿äÄ¡ ¾Ê´Ù. C ¾ð¾î¿¡¼­ ÄÁÅؽºÆ®¸¦ º¯°æÇÏ´Â /*, //, ", ¡®´Â ´ÙÇàÈ÷ ¸ðµÎ ±¸ºÐÀÚÀ̱⠶§¹®Àε¥ ±¸ºÐÀÚ°¡ ¾Æ´Ñ ¹®ÀÚ¿¡ ÀÇÇØ ÄÁÅؽºÆ®°¡ º¯°æµÉ ¼ö ÀÖ´Ù¸é Á¶°Ç¹®ÀÌ Çϳª ´õ Ãß°¡µÇ¾î¾ß ÇÑ´Ù.

°Ë»ö ¹®ÀÚ¿­ÀÇ ½ÃÀÛÀ§Ä¡ÀÎ idpos´Â ·çÇÁÀÇ ¸ðµç ºÎºÐ¿¡¼­ °ü¸®ÇÏ°í ÀÖÀ¸¸ç °Ë»ö ³¡ À§Ä¡ÀÎ idend´Â ¾Õ¼­ ¼³¸íÇÑ Á¶°Ç¿¡ µû¶ó i³ª i-1·Î °è»êµÈ´Ù. °Ë»ö ´ë»ó ¹®ÀÚ¿­ÀÇ ¹üÀ§¸¦ ±¸ÇÑ ÈÄ¿¡µµ ¹«Á¶°Ç °Ë»öÀ» ÇÏ´Â °ÍÀº ¾Æ´Ï¸ç ±æÀÌ°¡ 1ÀÌ»óÀÏ ¶§¸¸ °Ë»öÇÑ´Ù. Á٠óÀ½ºÎÅÍ ±¸ºÐÀÚ°¡ ³ª¿Ã °æ¿ì´Â ±æÀÌ°¡ 0ÀÎ °Ë»ö ¹®ÀÚ¿­ÀÌ ³ª¿Ã ¼ö Àִµ¥ À̶§´Â ¾ÆÁ÷ ´Ü¾î¸¦ °Ë»öÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

¹®ÀÚ¿­ °Ë»öÀº IsKeyword, IsPreProcessor, IsNumber ¼¼ µµ¿ì¹Ì ÇÔ¼ö°¡ ´ë½ÅÇÑ´Ù. ÀÌ ÇÔ¼öµéÀº °Ë»ç ´ë»ó ¹®ÀÚ¿­ÀÇ ½ÃÀÛÀ§Ä¡¿Í ³¡ À§Ä¡¸¦ ³Ñ°ÜÁÖ¸é ÀÌ À§Ä¡ÀÇ ¹®ÀÚ¿­ÀÌ Å°¿öµåÀÎÁö ¼ýÀÚÀÎÁö ¶Ç´Â Àü󸮱âÀÎÁö Á¶»çÇÑ´Ù. ÀǹÌÀÖ´Â ´Ü¾î°¡ ¹ß°ßµÇ¸é ¹ß°ßµÈ ½ºÅ¸ÀÏÀ» À¯´Ö¿¡ ±â·ÏÇÏ°í ´Ù½Ã ³ë¸» ½ºÅ¸ÀÏÀ» µÚ¿¡ ±â·ÏÇÑ´Ù. Å°¿öµå³ª ¼ýÀÚ µÚ¿¡´Â ÀÏ¹Ý ¹®ÀÚ¿­ÀÌ ¿Â´Ù°í °¡Á¤ÇÏ°í ÀÖ´Â °ÍÀÌ´Ù. ¸¸¾à Å°¿öµå µÚ¿¡ ¹Ù·Î ¹®ÀÚ¿­À̳ª ÁÖ¼®ÀÌ ¿Â´Ù°í ÇÏ´õ¶óµµ MakeParseInfo ÇÔ¼ö°¡ ±æÀÌ 0ÀÎ À¯´ÖÀº »èÁ¦ÇϹǷΠ¹®Á¦µÉ °ÍÀº ¾ø´Ù.

IsKeyword ÇÔ¼ö´Â C ¾ð¾îÀÇ Å°¿öµå ¸ñ·ÏÀ» keyword ¹®ÀÚ¿­ »ó¼ö¿¡ Á¤ÀÇÇÏ°í ÀÖÀ¸¸ç CParseÀÇ IsStringExist ÇÔ¼ö·Î ¹®ÀÚ¿­ ¸ñ·Ï¿¡ °Ë»ö ´ë»ó ¹®ÀÚ¿­ÀÌ ÀÖ´ÂÁö ½±°Ô Á¶»çÇÒ ¼ö ÀÖ´Ù. Àü󸮱⸦ °Ë»çÇÏ´Â IsPreProcessor È£Ãâ¹®Àº Á¶±Ý ƯÀÌÇѵ¥ Àü󸮱⸦ ±¸¼ºÇÏ´Â # ¹®ÀÚ°¡ ±¸ºÐÀÚ·Î µÇ¾î Àֱ⠶§¹®ÀÌ´Ù. ±×·¡¼­ idpos´Â Ç×»ó ÀÌ ¹®ÀÚ ´ÙÀ½À» °¡¸®Å°¸ç °Ë»ö ´ë»ó ¹®ÀÚ¿­À» idposº¸´Ù ÇÑ Ä­ ¾ÕÂÊÀ¸·Î ÁöÁ¤Çß´Ù.

ºí·Ï ÁÖ¼® ÄÁÅؽºÆ®

ÀÌ »óÅ¿¡¼­´Â ¸ðµç ¹®ÀÚ¿­ÀÌ ÁÖ¼®ÀÌ´Ù. /* */ºí·Ï ¾È¿¡´Â Å°¿öµå³ª ¹®ÀÚ¿­ ½ÉÁö¾î ÇÑ ÁÙ ÁÖ¼® µîµµ ¸ðµÎ ¹«½ÃµÈ´Ù. ¿À·ÎÁö */¹®ÀÚ¸¸ÀÌ ºí·Ï ÁÖ¼®À» ³¡³¾ ¼ö ÀÖÀ¸¹Ç·Î */¹®ÀÚ °Ë»ö ¿Ü¿¡´Â ¾Æ¹«°Íµµ ÇÒ ÇÊ¿ä°¡ ¾øÀ¸¸ç °è¼Ó continue·Î ·çÇÁ ¼±µÎ·Î °¡±â¸¸ ÇÏ¸é µÈ´Ù. */¹®ÀÚ°¡ ¹ß°ßµÇ¸é ºí·Ï ÁÖ¼®À» ³¡³»±â À§ÇØ ³ë¸» ½ºÅ¸ÀÏÀ» ±â·ÏÇÏ°í ÄÁÅؽºÆ®µµ ³ë¸»·Î º¹±ÍÇÏ¿© ´Ù¸¥ ½ºÅ¸ÀÏÀ» ãµµ·Ï ÇÑ´Ù.

³ë¸» ÄÁÅؽºÆ®·Î º¹±ÍÇϱâ Àü¿¡ idpos¿¡ ÁÖ¼®ÀÌ ³¡³­ ÁöÁ¡, Áï /* ¹Ù·Î ´ÙÀ½ À§Ä¡¸¦ ±â·ÏÇصξú´Ù. ÀÌó·³ °¢ ÄÁÅؽºÆ®´Â ³ë¸» ÄÁÅؽºÆ®¿¡¼­ ¹®ÀÚ¿­ °Ë»öÀ» À§ÇØ ÄÁÅؽºÆ®°¡ ³¡³¯ ¶§ idpos¸¦ °ü¸®ÇØ¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÁÖ¼® ¹Ù·Î ´ÙÀ½¿¡ À̾îÁö´Â Å°¿öµå³ª ¼ýÀÚ´Â ½ºÅ¸ÀÏÀ» Á¦´ë·Î ãÁö ¸øÇÒ °ÍÀÌ´Ù.

¹®ÀÚ(¿­) »ó¼ö ÄÁÅؽºÆ®

¹®ÀÚ¿­ »ó¼ö »óÅ¿¡¼­ ¸ðµç ¹®ÀÚ´Â ´Ý´Â °ãµû¿ÈÇ¥¸¦ ¸¸³ª±â Àü¿¡´Â ¹«Á¶°Ç ¹®ÀÚ¿­ÀÌ´Ù. ´Ý´Â °ãµû¿ÈÇ¥¸¦ ¸¸³ª¸é ¹®ÀÚ¿­ »ó¼ö ½ºÅ¸ÀÏÀÌ ³¡³ª¸ç ³ë¸» ÄÁÅؽºÆ®·Î µ¹¾Æ¿Â´Ù. ´Ü ¿¹¿ÜÀûÀ¸·Î ¡®quo\"te¡¯ µî°ú °°ÀÌ ¿ª½½·¹½¬ ´ÙÀ½ÀÇ °ãµû¿ÈÇ¥´Â ´Ý´Â µû¿ÈÇ¥·Î ÀÎÁ¤ÇÏÁö ¾Ê´Â´Ù. ¹®ÀÚ¿­ ³»¿¡¼­ ¿ª½½·¹½¬´Â È®Àå¿­À» ÀǹÌÇϹǷΠ¹®ÀÚ ±×´ë·Î Çؼ®Çؼ­´Â ¾ÈµÈ´Ù.

CPP_CON_CHAR ÄÁÅؽºÆ®´Â ¹®ÀÚ¿­ »ó¼ö ÄÁÅؽºÆ®¿Í °ÅÀÇ ¸ðµç ¸é¿¡¼­ µ¿ÀÏÇÏ´Ù. ´Ù¸¸ ÄÁÅؽºÆ®ÀÇ Á¾·á¸¦ À§ÇØ °ãµû¿ÈÇ¥ ´ë½Å Ȭµû¿ÈÇ¥¸¦ ã´Â´Ù´Â °Í¸¸ ´Ù¸£´Ù.

 

ÀÌ·± ½ÄÀ¸·Î ºÐ¼®±â´Â for (i) ·çÇÁ¸¦ °è¼Ó µ¹¸ç Çѹ®ÀÚ¾¿ °Ë»çÇØ ³ª°£´Ù. Áß°£¿¡ ½ºÅ¸ÀÏÀÌ ¹ß°ßµÉ ¶§¸¶´Ù MakeParseInfo ÇÔ¼ö¸¦ È£ÃâÇÏ¿© À¯´Ö¿¡ ½ºÅ¸ÀÏÀ» ±â·ÏÇÑ´Ù. ½ºÅ¸ÀÏÀÌ ¹Ù²ð ¶§ ÄÁÅؽºÆ®µµ °°ÀÌ ¹Ù²î¸ç ÄÁÅؽºÆ®°¡ ¹Ù²ð ¶§¸¶´Ù ºÐ¼® ¹æ¹ýµµ ¹Ù²î°Ô µÈ´Ù. °á±¹ nLine ÁÙÀÇ Ã³À½ºÎÅÍ ³¡±îÁö ¸ðµç ¹®ÀÚ¸¦ Çϳª¾¿ Àо¸ç ºÐ¼® Á¤º¸¸¦ ÀÛ¼ºÇÑ´Ù. ÇÑ ÁÙ ÁÖ¼®À» ¸¸³µÀ» ¶§¸¦ Á¦¿ÜÇÏ°í ¸ðµç ¹®Àڴ óÀ½ºÎÅÍ ³¡±îÁö ½ºÄµµÉ °ÍÀÌ´Ù.

ÇÑ ÁÙ ºÐ¼®ÀÌ ³¡³ª¸é ´ÙÀ½ ÁÙ ºÐ¼®À» À§ÇØ ÄÁÅؽºÆ®¸¦ ÀúÀåÇÑ´Ù. Áö±Ý ÀÌ ÁÙÀÌ ºí·Ï ÁÖ¼®À̾úÀ¸¸é ´ÙÀ½ ÁÙµµ °è¼Ó ºí·Ï ÁÖ¼®ÀÌ µÈ´Ù. ÄÁÅؽºÆ®´Â ParseLine ÇÔ¼ö°¡ ´ÙÀ½ ¹ø È£ÃâÀ» À§ÇØ ¼û°ÜµÎ´Â Á¤º¸¶ó°í »ý°¢ÇÒ ¼ö ÀÖ´Ù. ´Ü, ÄÁÅؽºÆ®¸¦ ±×´ë·Î ÀúÀåÇÏÁö ¾Ê´Â ÇÑ °¡Áö ¿¹¿Ü°¡ Àִµ¥ ¹®ÀÚ¿­À̳ª ¹®ÀÚ¿­ »ó¼ö ÄÁÅؽºÆ®´Â °³ÇàÄڵ带 ¸¸³ª¸é °­Á¦·Î ³ë¸» »óÅ·Πµ¹¾Æ¿Â´Ù.

¿©´Â µû¿ÈÇ¥¸¸ ÀÖ°í ÁÙ ³¡±îÁö ´Ý´Â µû¿ÈÇ¥°¡ ¾øÀ¸¸é ÀÌ°ÍÀº ¿¡·¯´Ù. C/C++ ¹®¹ýÀº ¹®ÀÚ¿­ »ó¼ö¸¦ ¿©·¯ ÁÙ¿¡ ±âÀÔÇÏ´Â °ÍÀ» Çã¶ôÇÏÁö ¾Ê´Â´Ù. ´Ü ¿¹¿ÜÀûÀ¸·Î Çà °è¼Ó ¹®ÀÚÀÎ \¸¦ ÁÙ ³¡¿¡ ½á µÎ¸é °¡´ÉÇÏ´Ù. ´ÙÀ½Àº ParseLine ÇÔ¼öÀÇ ÀüüÀûÀÎ ¼ø¼­µµÀÌ´Ù. ÇÔ¼ö°¡ Á» º¹ÀâÇÏ¿© Àб⸸ Çؼ­´Â Àß ÀÌÇØ°¡ µÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ´ÙÀ½ ¼ø¼­µµ¸¦ Âü°íÇÏ¿© ÂùÂùÈ÷ ºÐ¼®Çغ¸±â ¹Ù¶õ´Ù.