³ª. ±âº» ºÐ¼®±â

±âº» ºÐ¼®±â(Default Parser)¶õ ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â µðÆúÆ® ºÐ¼®±âÀÌ´Ù. C³ª HTML, ÀÚ¹Ù ¹®¼­µéÀº ¾ö°ÝÇÑ ¹®¹ýÀ» °¡ÁöÁö¸¸ ¸Å´º¾óÀ̳ª ¼Ò¼³, ¸Þ¸ð °°Àº ÅؽºÆ®µéÀº Ưº°È÷ Àû¿ëÇÒ ¹®¹ýÀÌ ¾øÀ¸¹Ç·Î ¸ðµç ÅؽºÆ®´Â ÀÏ¹Ý ¹®ÀÚ¿­·Î Ãâ·ÂµÇ¾î¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î Readme.txt °°Àº ÀÏ¹Ý ÅؽºÆ® ÆÄÀÏÀº ±¸¹® ºÐ¼®À» ÇÒ¸¸ÇÑ ±ÔÄ¢ÀÌ ¾øÀ¸¹Ç·Î ºÐ¼®ÇÒ ÇÊ¿äµµ ¾øÀÌ Èò¹ÙÅÁ¿¡ °ËÁ¤»öÀ¸·Î ¹®ÀÚ¿­À» Ãâ·ÂÇÏ¸é µÈ´Ù.

±×·¯³ª ApiEdit¿¡ ¹®¹ý°­Á¶ ±â´ÉÀÌ µé¾î°¡°Ô µÇ¸é ¸ðµç Ãâ·ÂÄÚµåµéÀÌ ÀÌ ±â´ÉÀ» Áö¿øÇϱâ À§ÇØ Àü¸éÀûÀ¸·Î ¼öÁ¤µÇ¾î¾ß Çϴµ¥ ÀÏ¹Ý ÅؽºÆ®¸¦ À§Çؼ­ ¹®¹ý°­Á¶¸¦ ÇÏÁö ¾Ê´Â ÄÚµå±îÁö À¯ÁöÇÏ·Á¸é ¹«Ã´ ¹ø°Å·Î¿öÁú °ÍÀÌ´Ù. ¹®¹ý°­Á¶°¡ ÇÊ¿äÇÒ ¶§¿Í ±×·¸Áö ¾ÊÀ» ¶§¸¦ ±¸ºÐÇÏÀÚ¸é ÄÚµå´Â ´ÙÀ½°ú °°¾ÆÁú °ÍÀÌ´Ù.

 

if (¹®¹ýÀÌ ÀÖ´Â ¹®¼­) {

     ±¸¹® ºÐ¼®À» ÇÑ ÈÄ Ãâ·Â

} else {

     ÀÏ¹Ý ¹®ÀÚ¿­·Î Ãâ·Â

}

 

Ãâ·Â ÄÚµå»Ó¸¸ ¾Æ´Ï¶ó ºÐ¼®±â »ý¼º, °ü¸®, Æı«, ÆíÁý µî ¸ðµç ÄÚµåµéÀÌ ¹®¹ý À¯¹«¿¡ µû¶ó µÎ¹úÀÇ Äڵ带 °¡Á®¾ß Çϴµ¥ ÀÌ·¸°Ô ÇÏÀÚ¸é Äڵ带 À¯Áö, °ü¸®ÇϱⰡ ¾î·Á¿öÁø´Ù. ÀÌ·² ¶§´Â ¾à°£ÀÇ ¹ß»ó ÀüȯÀ¸·Î µÎ ¹úÀÇ Äڵ带 Çϳª·Î ÅëÇÕÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.

¹®¹ýÀÌ ¾ø´Ù´Â ¸»Àº ¸ðµç ¹®ÀÚ¿­ÀÇ ½ºÅ¸ÀÏÀÌ ÀÏ¹Ý ¹®ÀÚ¿­À̶ó´Â ¶æ°ú °°´Ù. Áï ÀÏ¹Ý ÅؽºÆ®µµ ±¸¹® ºÐ¼®À» Çϱâ´Â Ç쵂 ºÐ¼®°á°ú¸¦ ȹÀÏÀûÀ¸·Î °°°Ô ¸¸µå´Â °ÍÀÌ´Ù. ¹®¹ýÀÌ Àû¿ëµÇÁö ¾Ê´Â ¹®¼­µµ ¹®¹ýÀ» °¡Áö°Ô ¸¸µêÀ¸·Î½á ApiEditÀÇ ºÐ¼® °ü·Ã Äڵ带 ÀϹÝÈ­½Ãų ¼ö ÀÖ´Ù. À̶§ »ç¿ëµÇ´Â ºÐ¼®±â°¡ ¹Ù·Î ±âº» ºÐ¼®±âÀÌ´Ù. ±âº» ºÐ¼®±â´Â ºÐ¼®°á°ú´Â ´Ü¼øÇÏÁö¸¸ C++ ºÐ¼®±â, ÀÚ¹Ù ºÐ¼®±â µî°ú µ¿ÀÏÇÑ ÀÚ°ÝÀ» °¡Áö¸ç ApiEditÀÇ ±¸¹® ºÐ¼® ¿äûÀ» ¸Å²ô·´°Ô ó¸®ÇÏ´Â ÀÏÁ¾ÀÇ Ç÷¹À̽º Ȧ´õ(Place Holder) ¿ªÇÒÀ» ÇÑ´Ù.

±âº» ºÐ¼®±â´Â pInfo ¹è¿­¿¡ ºÐ¼®°á°ú¸¦ ÀÛ¼ºÇϱâ´Â ÇÏÁö¸¸ ½ÇÁ¦·Î ¹®¼­¸¦ ºÐ¼®ÇÏÁö´Â ¾Ê±â ¶§¹®¿¡ Äڵ嵵 ¾ÆÁÖ °£´ÜÇÏ´Ù. Parse.h¿¡ ´ÙÀ½°ú °°ÀÌ CParseNull Ŭ·¡½º¸¦ ¼±¾ðÇϵµ·Ï ÇÏÀÚ.

 

class CParseNull : public CParse

{

public:

     CParseNull();

     ~CParseNull() {};

     TCHAR *GetInfo(int iIndex);

private:

     void ParseLine(CApiEdit &ae,int nLine);

};

 

¿øÄ¢ÀûÀ¸·Î Ŭ·¡½º´ç ÇϳªÀÇ Çì´õ ÆÄÀÏÀ» µû·Î ¸¸µå´Â °ÍÀÌ ÁÁÁö¸¸ ¸ðµâÀÌ ¸¹¾ÆÁö¸é ½Ç½ÀÇغ¸±â ¾î·Á¿ì¹Ç·Î ºÐ¼®±â °ü·Ã ÄÚµå´Â °è¼Ó Parse.h, Parse.cpp¿¡ ÀÛ¼ºÇϱâ·Î ÇÏÀÚ. ±âº» ºÐ¼®±â Ŭ·¡½º CParseNullÀº CParse·ÎºÎÅÍ »ó¼ÓÀ» ¹ÞÀ¸¹Ç·Î pInfo, ParseSize µîÀÇ ¸â¹öº¯¼ö¿Í MakeParseInfo, DeleteParseInfo, ParseLines µîÀÇ ¸â¹öÇÔ¼ö¸¦ ±×´ë·Î »ó¼Ó¹Þ´Â´Ù. »ý¼ºÀÚ¿Í CParse°¡ ±¸ÇöÇÏÁö ¾Ê´Â ¼ø¼ö °¡»óÇÔ¼ö µÎ °³´Â Á¤ÀÇÇØ¾ß ÇÑ´Ù. ±¸Çö ÄÚµå´Â ´ÙÀ½°ú °°À¸¸ç CParse.cpp¿¡ ÀÛ¼ºÇÑ´Ù.

 

CParseNull::CParseNull()

{

     lstrcpy(arStyle[0].name,"º¸Åë");

     arStyle[0].fore=(DWORD)-1;

     arStyle[0].back=(DWORD)-1;

}

 

TCHAR *CParseNull::GetInfo(int iIndex)

{

     switch (iIndex) {

     case 0:

          return (TCHAR *)0;

     case 1:

          return TEXT(" \t\r\n\"\¡¯\\.,<>:;/()[]{}~!@#%^&*-+=?|$");

     default:

          return TEXT("");

     }

     return 0;

}

 

void CParseNull::ParseLine(CApiEdit &ae,int nLine)

{

     int nUnit=0;

     MakeParseInfo(nLine,nUnit,ae.pLine[nLine].Start,0);

}

 

ÇÏ´Â ÀÏÀÌ ¾ø±â ¶§¹®¿¡ ÄÚµå´Â Á¤¸» Áö±ØÈ÷ °£´ÜÇÏ´Ù. »ý¼ºÀÚ´Â ½ºÅ¸ÀÏ¿¡ µû¸¥ »ö»óÀ» Á¤ÀÇÇÑ´Ù. ±âº» ºÐ¼®±â´Â 0¹øÀÇ º¸Åë ½ºÅ¸ÀϹۿ¡ °¡ÁöÁö ¾ÊÀ¸¸ç ÀÌ ½ºÅ¸ÀÏÀÇ »ö»óÀº ¸ðµÎ -1ÀÌ´Ù. Áï ApiEditÀÇ µðÆúÆ® »ö»óÀ» ±×³É ¾´´Ù´Â ¶æÀÌ´Ù. µû¶ó¼­ ¸ðµç ¹®ÀÚ¿­Àº ÀÏ¹Ý ¹®ÀÚ¿­·Î Çؼ®µÇ¸ç ApiEdit°¡ Á¤ÀÇÇÑ »ö»ó´ë·Î Ãâ·ÂµÈ´Ù.

GetInfo ÇÔ¼ö´Â ºÐ¼®±âÀÇ °íÀ¯ Á¤º¸¸¦ Á¶»çÇÑ´Ù. iIndex·Î ¾Ë°í ½ÍÀº Á¤º¸ÀÇ ¹øÈ£¸¦ Àü´ÞÇÏ¸é ´ÙÀ½°ú °°Àº °ªÀ» ¸®ÅÏÇÑ´Ù.

 

¹øÈ£

¼³¸í

0

ºÐ¼®±âÀÇ °íÀ¯ ¹øÈ£ÀÎ IDÀÌ´Ù. ÀÌ °ªÀº È£½ºÆ®°¡ ÇöÀç ¼±ÅÃµÈ ºÐ¼®±â¸¦ Á¶»çÇÒ ¶§ »ç¿ëµÈ´Ù. Á¤¼öÇüÀ» ¸®ÅÏÇϹǷΠȣÃâÃø¿¡¼­´Â int·Î ij½ºÆÃÇØ¾ß ÇÑ´Ù. ºÐ¼®±â°¡ Ãß°¡µÉ ¶§¸¶´Ù 1¾¿ Áõ°¡ÇÏ´Â °íÀ¯ ID¸¦ ºÙ¿© ÁÖ¸é µÈ´Ù.

1

±¸ºÐÀÚ ¹®ÀÚ¿­ÀÌ´Ù. ¹®¹ý¿¡ µû¶ó ÀÎÁ¤ÇÏ´Â ±¸ºÐÀÚ ¸ñ·ÏÀº ´Þ¶óÁø´Ù.

2

ÇÑ ÁÙ ÁÖ¼® ¹®ÀÚ¿­ÀÌ´Ù. CÀÇ °æ¿ì //

3

ºí·Ï ÁÖ¼®ÀÇ ½ÃÀÛ ¹®ÀÚ¿­ÀÌ´Ù. CÀÇ °æ¿ì /*

4

ºí·Ï ÁÖ¼®ÀÇ ³¡ ¹®ÀÚ¿­ÀÌ´Ù. CÀÇ °æ¿ì */

5

µé¿©¾²±â¸¦ ÇÒ ¹®ÀÚ¿­ÀÌ´Ù. C´Â {, ÆĽºÄ®Àº begin

6

³»¾î¾²±â¸¦ ÇÒ ¹®ÀÚ¿­ÀÌ´Ù. C´Â }, ÆĽºÄ®Àº end

 

CParseNull::GetInfo ÇÔ¼ö´Â ID·Î 0À» ¸®ÅÏÇÏ¸ç ±¸ºÐÀÚ´Â À¢¸¸ÇÑ ±âÈ£µéÀ» ´Ù Æ÷ÇÔÇÏ°í ÀÖ´Ù. ÁÖ¼®°ú µé¿©¾²±â´Â Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î 2¹ø ÀÌÈÄÀÇ ¹®ÀÚ¿­Àº ¸ðµÎ ºó ¹®ÀÚ¿­ÀÌ´Ù.

ParseLine ÇÔ¼ö´Â Àμö·Î Àü´ÞµÈ nLineÀ» ºÐ¼®Çϴµ¥ ±âº» ºÐ¼®±â´Â ¹®¼­ ³»¿ë°ú »ó°ü¾øÀÌ ¸ðµç ÁÙÀ» 0¹ø ½ºÅ¸ÀÏ·Î »ó¼ö ºÐ¼®ÇÑ´Ù. MakeParseInfo ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¸ðµç ÁÙÀÇ 0¹ø À¯´Ö styleÀ» 0À¸·Î ÀÛ¼ºÇÏ°í ÀÖ´Ù. ParseLines ÇÔ¼ö´Â nLine ÁÙ±îÁö ÀÌ ÇÔ¼ö¸¦ ¹Ýº¹ÀûÀ¸·Î È£ÃâÇÏ¸ç ±× °á°ú pInfo ¹è¿­Àº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºµÈ´Ù.

ÁÙÀÇ Áß°£¿¡¼­ ½ºÅ¸ÀÏÀÌ ¹Ù²î´Â °æ¿ì°¡ ¾ø±â ¶§¹®¿¡ ¸ðµç ÁÙÀÇ À¯´Öµµ ´Ü Çϳª¸¸ ÇÊ¿äÇÏ´Ù. ±âº» ºÐ¼®±â´Â ½ÇÁ¦·Î ¹®¼­ ³»¿ëÀ» ºÐ¼®ÇÏÁö ¾Ê±â ¶§¹®¿¡ ÀÌ ÄÚµå·Î´Â ºÐ¼®±âÀÇ µ¿ÀÛ°ú ±¸Á¶¸¦ »ìÆ캼 ¼ö ¾ø´Ù. ´ÙÀ½¿¡ À̾îÁö´Â C++ ºÐ¼®±âÀÇ Äڵ带 º¸¸é ºÐ¼®±â°¡ ¾î¶² ½ÄÀ¸·Î ¹®¼­¸¦ ºÐ¼®Çس»´ÂÁö º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.