¹®ÀÚ¿ Á¾·ùº°·Î ºÐ·ùÇÏ´Â °£´ÜÇÑ Lexer¸¦ ¸¸µé¾î º¸ÀÚ.
¹®ÀÚ¿ Á¾·ù´Â ´ÙÀ½°ú °°´Ù.
enum TOKEN_TYPE { TOKEN_UNKNOWN, TOKEN_ERROR, TOKEN_END, TOKEN_DELIMITER, TOKEN_VAR, TOKEN_NUMBER, TOKEN_STRING };
|
TOKEN_DELIMITER : ±¸ºÐÀÚ TOKEN_VAR : º¯¼ö TOKEN_NUMBER : ¼ýÀÚ TOKEN_STRING : ¹®ÀÚ¿
char* CLexer::OpenFile( const char* szFileName )
[in] szFileName ¿ÀÇÂÇÒ ÆÄÀÏ ¹Ýȯ°ª ¿ÀÇÂÇÑ ÆÄÀÏÀÇ ¹®ÀÚ¿ Æ÷ÀÎÅÍ
¹®ÀÚ¿À» Á÷Á¢ Builder()·Î ³Ñ°ÜÁÖ´Â °æ¿ì´Â OpenFile()À» ÀÌ¿ë ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.
|
void Build( char* szText )
[in] szText ºÐ·ù ÇÒ ¹®ÀÚ¿ÀÇ Æ÷ÀÎÅÍ
¹®ÀÚ¿À» ºÐ·ùÇؼ m_tokenContainer¿¡ ÀúÀåÇÑ´Ù.
|
CLexer::TOKEN_TYPE GetToken()
¹Ýȯ°ª TOKEN_TYPEÀ» ¹ÝȯÇÑ´Ù.
ÇϳªÀÇ ±¸¹® ¹®ÀÚ¿(´Ü¾î)Àº m_strToken¿¡ ÀúÀåµÈ´Ù.
|
CLexerÀÇ ÇÙ½ÉÀº GetToken()ÀÌ´Ù.
GetToken()ÀÇ Ã³¸® ¼ø¼´Â ´ÙÀ½°ú °°´Ù.
1. ÅäÅ« ¾ÕÀÇ °ø¹é¹®ÀÚ Á¦°Å.(½ºÆäÀ̽º ¹®ÀÚ, /t, /r, /n)
2. ±¸ºÐÀÚ °Ë»ç
3. ¹®ÀÚ¿ °Ë»ç SearchString()
4. º¯¼öÀÎÁö °Ë»ç SearchVariable()
5. ¼ýÀÚÀÎÁö °Ë»ç SearchNumber()
CLexer »ç¿ë ¿¹
CLexer lexer;
char* pBuffer = lexer.OpenFile("test.cpp");
lexer.Build( pBuffer );
lexer.DisplayToken();
|
¿©±â¼´Â ÆÄÀÏÀ» Á÷Á¢ ¿ÀÇÂÇؼ ¹®ÀÚ¿ ÅäÅ«À» ºô´õÇÏ°í ÀÖ´Ù. DisplayToken()À» ÅëÇØ ÄܼÖâÀ¸·Î Á÷Á¢ º¸¿©ÁÖ°í ÀÖ´Ù.
CLexerÀÇ ¹ÌºñÇÑÁ¡: È°¿ë¼ºÀ» ³ôÀÌ°í º¹ÀâÇØÁö±â Àü¿¡, ±â´É Ãß°¡¸¦ ±×¸¸ µÎ±â·Î Çß´Ù. ±×·¡µµ Ãß°¡ µÇ¾úÀ¸¸é Çϴ±â´ÉÀº ´ÙÀ½°ú °°´Ù.
1. À¯´ÏÄÚµå ó¸® 2. ÁÖ¼® ¹®ÀÚ¿ ó¸® 3. ÇÑ±Û º¯¼ö ó¸®
|