ÆÄÀÏ¿¡¼ µ¥ÀÌÅ͸¦ ÀÐÀ» ¶§ °¢ Ç׸ñ, Áï ÅäÅ« ´ÜÀ§·Î ³ª´©¾î Àеµ·Ï ÇØÁִ Ŭ·¡½º°¡ StreamTokenizerŬ·¡½ºÀÔ´Ï´Ù. StreamTokenizerŬ·¡½º´Â ÀÔ·Â ½ºÆ®¸², ¶Ç´Â ¹®ÀÚ ½ºÆ®¸²¿¡¼ ½ºÆ®¸²À» ÀÔ·Â¹Þ¾Æ ÅäÅ« ´ÜÀ§·Î ³ª´©¾î ÁÖ¸ç, ÀÌ·¸°Ô ³ª´©¾î ³õÀº ÅäÅ«À» ÇѲ¨¹ø¿¡ ÀÐÀ» ¼ö ÀÖµµ·Ï ÇØ ÁÝ´Ï´Ù. ÀÌ StreamTokenizerŬ·¡½º¸¦ »ç¿ëÇϸé ID, ¼ýÀÚ, ¹®ÀÚ¿, ÁÖ¼® µî ´Ù¾çÇÑ ÇüÅÂÀÇ ÅäÅ«µéÀ» ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù. StreamTokenizerŬ·¡½ºÀÇ ÀϹÝÀûÀÎ »ç¿ë ÀýÂ÷´Â ´ÙÀ½°ú °°½À´Ï´Ù.
¢Ñ ÅäÅ«(token)? |
½ºÆäÀ̽º, Åǹ®ÀÚ³ª ¡°, ; :¡±µî ÁöÁ¤µÈ °æ°èÀÚ·Î ³ª´µ¾î¼ ºÐ¸®µÇ¾îÁø streamÀ» ¸»ÇÑ´Ù. ¿¹¸¦ µé¾î ½ºÆ®¸²ÀÌ 111:222:333 À̰í À̰ÍÀÌ °æ°èÀÚ ¡®:¡¯¿¡ ÀÇÇÏ¿© tokenizeµÇ¾ú´Ù¸é, 111, 222, 333ÀÌ °¢°¢ ÇϳªÀÇ ÅäÅ«ÀÎ °ÍÀÌ´Ù. |
1. Reader°³Ã¼¸¦ À§ÇÑ StreamTokenizer°³Ã¼¸¦ ¸¸µì´Ï´Ù.
2. ¹®ÀÚ¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀ» Á¤ÀÇÇÕ´Ï´Ù.
3. nextToken()¸Þ¼µå¸¦ È£ÃâÇÏ¿© ´ÙÀ½ ÅäÅ«À» °¡Á®¿É´Ï´Ù.
4. ttype ÀνºÅϽº º¯¼ö¸¦ Àоî ÅäÅ« Çü½ÄÀ» °áÁ¤ÇÕ´Ï´Ù.
5. sval, nval ¶Ç´Â ttype ÀνºÅϽº º¯¼ö¿¡¼ ÅäÅ« °ªÀ» ÀнÀ´Ï´Ù.
6. ÅäÅ«À» ó¸®ÇÕ´Ï´Ù.
7. nextToken()¸Þ¼µå°¡ StreamTokenizer.TT_EOF¸¦ ¹ÝȯÇÒ ¶§±îÁö ´Ü°è 3ºÎÅÍ ´Ü°è 6±îÁöÀÇ °úÁ¤À» ¹Ýº¹ÇÕ´Ï´Ù
À̹ø¿¡´Â À§¿¡¼ ¼³¸íÇÑ StreamTokenizerŬ·¡½ºÀÇ ÀϹÝÀûÀÎ »ç¿ë ÀýÂ÷¿¡ ¸ÂÃç ÅØ½ºÆ® ÆÄÀÏ¿¡ µé¾î ÀÖ´Â ¹®ÀÚµéÀ» ÅäÅ«À¸·Î ³ª´©¾î Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸°Ú½À´Ï´Ù. Àú´Â ¡®¾ß µÈ´Ù!!ȣȣȣ~~53¡¯ À̶ó´Â ¹®ÀåÀÌ µé¾î ÀÖ´Â ¡°StreamTonkenizerTest.txt¡±ÆÄÀÏÀ» ¸¸µé¾î ½ÃÇèÇØ º¸¾Ò½À´Ï´Ù. ¿©·¯ºÐµµ ¿©·¯°¡Áö ¹®ÀåºÎÈ£¸¦ ³Ö¾î¼ ½ÃÇèÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.
StreamTokenizerTest.java (StreamTokenizerÀ» Å×½ºÆ®ÇÑ ¿¹Á¦) |
import java.io.*; public class StreamTokenizerTest { public static void main(String[] args) throws IOException { InputStreamReader reader = new InputStreamReader(new FileInputStream("StreamTokenizerTest.txt")); StreamTokenizer tokens = new StreamTokenizer(reader); tokens.quoteChar('"'); while(tokens.nextToken()!= tokens.TT_EOF) { switch(tokens.ttype) { case '"': System.out.println(tokens.sval); break; case StreamTokenizer.TT_WORD: System.out.println(tokens.sval); break; case StreamTokenizer.TT_NUMBER: System.out.println(tokens.nval); break; } } } } |
C:\JavaExample\09>javac StreamTokenizerTest.java C:\JavaExample\09>java StreamTokenizerTest ¾ß µÈ´Ù ȣȣȣ 53.0 |
¿¹Á¦¸¦ µ¹·Áº¸½Ã¸é ¡®StreamTonkenizerTest.txt¡¯ÆÄÀÏ¿¡ µé¾îÀÖ´Â ¹®ÀÚµéÀÌ ¹®ÀÚ¿·Î ºÐ¸®µÇ¾î Ãâ·ÂµÇ´Â °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÚ ±×·³, ¿¹Á¦¸¦ ÀÚ¼¼È÷ µé¿©´Ù º¸°Ú½À´Ï´Ù.
InputStreamReader¸¦ ÅëÇØ ÀÐ¾î µéÀÎ ¡®StreamTonkenizerTest.txt¡¯ÆÄÀÏÀÇ ³»¿ëµéÀ» ÅäÅ«À¸·Î ºÐ¸®Çϱâ À§ÇØ tokens°´Ã¼¸¦ »ý¼ºÇÏ¿´½À´Ï´Ù.
n StreamTokenizer tokens = new StreamTokenizer(reader);
quoteChar()¸Þ¼µå´Â ¹®ÀÚ°¡ ÀÏÄ¡ÇÏ´Â TokenizerÀÇ ¹®ÀÚ¿ »ó¼ö¸¦ ºÐ¸®Çϵµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. À̶§ quoteChar()¸Þ¼µå µÚ¿¡ nextToken()¸Þ¼µå°¡ ¹®ÀÚ¿ »ó¼ö¸¦ ¹ß°ßÇÏ´Â °æ¿ì, ttypeÇʵå´Â ¹®ÀÚ¿ ºÐ¸®ÀÚ·Î ¼³Á¤µÇ°í svalÇʵå´Â ¹®ÀÚ¿ º»¹®À¸·Î ¼³Á¤µË´Ï´Ù. ¹®ÀÚ¿ ÀÎ¿ë ±âÈ£°¡ ¹ß°ßµÇ¸é, ¹®ÀÚ¿ ÀÎ¿ë ±âÈ£(ÀÌ ¹®ÀÚ´Â Æ÷ÇÔÇÏÁö ¾ÊÀ½) ´ÙÀ½¿¡¼ ´ÙÀ½ ¹®ÀÚ¿ ÀÎ¿ë ±âÈ£°¡ ³ªÅ¸³ª´Â °÷±îÁö(ÀÎ¿ë ±âÈ£´Â Æ÷ÇÔÇÏÁö ¾ÊÀ½) ¶Ç´Â, Çà Á¾·á ±âÈ£³ª ÆÄÀÏÀÇ ³¡¿¡ À̸£±â±îÁöÀÇ ¸ðµç ¹®ÀÚ·Î ±¸¼ºµÇ´Â ¹®ÀÚ¿ÀÌ Àνĵ˴ϴÙ. ¹®ÀÚ¿ ºÐ¼®½Ã "\n" ¹× "\t"¿Í °°Àº º¸Åë À̽ºÄÉÀÌÇÁ ¼ø¼°¡ ÀÎ½ÄµÇ¾î ´ÜÀÏ ¹®ÀÚ·Î º¯È¯µË´Ï´Ù.
ÀÎ¿ë ±âÈ£ ¾ÈÀÇ ¹®ÀÚ¿À» Ãâ·ÂÇÕ´Ï´Ù.
n while(tokens.nextToken()!= tokens.TT_EOF) {
n switch(tokens.ttype) {
n case '"':
n System.out.println(tokens.sval);
n break;
n case StreamTokenizer.TT_WORD:
n System.out.println(tokens.sval);
n break;
n case StreamTokenizer.TT_NUMBER:
n System.out.println(tokens.nval);
n break;
n }
n }
ÅäÅ«ÀÌ ½ºÆ®¸²ÀÇ ³¡±îÁö µµÂøÇÏÁö ¾ÊÀ» ¶§±îÁö °è¼ÓÇØ¼ InputStreamReader¿¡¼ ´ÙÀ½ ÅäÅ«À» ºÐ¼®ÇÕ´Ï´Ù.
n while(tokens.nextToken()!= tokens.TT_EOF)
StreamTokenizer°¡ ´Ü¾î ÅäÅ«À» ÀоúÀ» ¶§ ±× ¹®ÀÚ¿À» Ãâ·ÂÇÏ°í ¼ýÀÚ¸¦ ÀоúÀ» ¶§ ±× ¼ýÀÚ°ªÀ» Ãâ·ÂÇÕ´Ï´Ù. À̶§ ÁÖÀÇÇÒ Á¡Àº tokens.TT_WORD°¡ ¾Æ´Ñ StreamTokenizer.TT_WORD·Î Àû¾î¾ß¸¸ " constant expression required" ¶ó´Â ¿¡·¯°¡ ³ªÁö ¾Ê½À´Ï´Ù.
n case StreamTokenizer.TT_WORD:
n System.out.println(tokens.sval);
n break;
n c ase StreamTokenizer.TT_NUMBER:
n System.out.println(tokens.nval);
n break;
StreamTokenizerŬ·¡½º´Â String´ë½Å¿¡ InputStream¿¡ µé¾î¿À´Â µ¥ÀÌÅ͸¦ ÅäÅ«´ÜÀ§·Î ³ª´©¾îÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. StreamTokenizerŬ·¡½º´Â Character¸¦ ±â¹ÝÀ¸·Î Çϱ⠶§¹®¿¡ µÇµµ·ÏÀ̸é Reader°è¿ÀÇ StreamÀ» ÀԷ¼ҽº·Î »ç¿ëÇÒ °ÍÀ» ±ÇÀåÇÕ´Ï´Ù.
StreamTokenizer »ý¼ºÀÚ¸Þ¼µå |
public StreamTokenizer(Reader r) : ÁÖ¾îÁø ¹®ÀÚ ½ºÆ®¸²À» ºÐ¼®ÇÏ´Â ÅäÅ©³ªÀÌÀú¸¦ ÀÛ¼ºÇÕ´Ï´Ù. |
StreamTokenizer ÁÖ¿ä ¸â¹öº¯¼ö |
public static final int TT_EOF : ½ºÆ®¸²ÀÇ ³¡À» ÀоúÀ½À» ³ªÅ¸³»´Â »ó¼öÀÔ´Ï´Ù. public static final int TT_EOL : ÇàÀÇ ³¡À» ÀоúÀ½À» ³ªÅ¸³»´Â »ó¼öÀÔ´Ï´Ù. public static final int TT_NUMBER : ¼ýÀÚ ÅäÅ«À» ÀоúÀ½À» ³ªÅ¸³»´Â »ó¼öÀÔ´Ï´Ù. public static final int TT_WORD : ´Ü¾î ÅäÅ«À» ÀоúÀ½À» ³ªÅ¸³»´Â »ó¼öÀÔ´Ï´Ù. public String sval : ÇöÀç ÅäÅ«ÀÌ ´Ü¾î ÅäÅ«À̸é ÀÌ Çʵ忡´Â ´Ü¾î ÅäÅ«ÀÇ ¹®ÀÚ¸¦ Á¦°øÇÏ´Â ¹®ÀÚ¿ÀÌ µé¾î ÀÖ½À´Ï´Ù. ÇöÀç ÅäÅ«ÀÌ ÀοëµÈ ¹®ÀÚ¿ ÅäÅ«À̸é ÀÌ Çʵ忡´Â ¹®ÀÚ¿ º»¹®ÀÌ µé¾î ÀÖ½À´Ï´Ù. ÇöÀç ÅäÅ«Àº ttype Çʵ尡 TT_WORDÀÎ °æ¿ì ÇϳªÀÇ ´Ü¾îÀÔ´Ï´Ù. ÇöÀç ÅäÅ«Àº ttype Çʵ尪ÀÌ ÀÎ¿ë ¹®ÀÚÀÎ °æ¿ì ÇϳªÀÇ ÀοëµÈ ¹®ÀÚ¿ ÅäÅ«ÀÔ´Ï´Ù. public double nval : ÇöÀç ÅäÅ«ÀÌ ¼ýÀÚÀ̸é ÀÌ Çʵ忡´Â ÇØ´ç ¼ýÀÚ°ªÀÌ µé¾î ÀÖ½À´Ï´Ù. ÇöÀç ÅäÅ«Àº ttype Çʵ尪ÀÌ TT_NUMBERÀÎ °æ¿ì ÇϳªÀÇ ¼ýÀÚÀÔ´Ï´Ù. public int ttype : nextToken ¸Þ¼µå¸¦ È£ÃâÇÑ ÈÄ, ÀÌ Çʵ忡´Â ¹æ±Ý ÀÐÀº ÅäÅ«ÀÇ À¯ÇüÀÌ µé¾î ÀÖ½À´Ï´Ù. ´ÜÀÏ ¹®ÀÚ ÅäÅ«ÀÇ °æ¿ì, °ªÀº Á¤¼ö·Î º¯È¯µÈ ´ÜÀÏ ¹®ÀÚÀÔ´Ï´Ù. ÀοëµÈ ¹®ÀÚ¿ ÅäÅ«ÀÇ °æ¿ì, °ªÀº ÀÎ¿ë ¹®ÀÚÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ´ÙÀ½ Áß ÇϳªÀÔ´Ï´Ù. TT_WORD´Â ÅäÅ«ÀÌ ÇÑ ´Ü¾îÀÓÀ» ³ªÅ¸³À´Ï´Ù. TT_NUMBER´Â ÅäÅ«ÀÌ ÇϳªÀÇ ¼ýÀÚÀÓÀ» ³ªÅ¸³À´Ï´Ù. TT_EOLÀº ÇàÀÇ ³¡À» ÀоúÀ½À» ³ªÅ¸³À´Ï´Ù. Çʵå´Â eolIsSignificant ¸Þ¼µå°¡ Àμö true·Î È£ÃâµÇ´Â °æ¿ì¿¡¸¸ ÀÌ °ªÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù. TT_EOF´Â ÀÔ·Â ½ºÆ®¸²ÀÇ ³¡¿¡ µµ´ÞÇßÀ½À» ³ªÅ¸³À´Ï´Ù. |
StreamTokenizer ÁÖ¿ä ¸Þ¼µå |
public int nextToken() throws IOException : TokenizerÀÇ ÀÔ·Â ½ºÆ®¸²¿¡¼ ´ÙÀ½ ÅäÅ«À» ºÐ¼®Çϴµ¥ ´ÙÀ½ ÅäÅ« À¯ÇüÀÌ ttypeÇʵå·Î ¸®Åϵ˴ϴÙ. ÅäÅ«¿¡ °üÇÑ Ãß°¡ ÆÁÀº TokenizerÀÇ nvalÇÊµå ¶Ç´Â svalÇʵ忡 ³ª¿Í ÀÖ½À´Ï´Ù. ÀÌ Å¬·¡½ºÀÇ ÀÏ¹Ý Å¬¶óÀÌ¾ðÆ®´Â ¸ÕÀú ±¸¹® Å×À̺íÀ» ¼³Á¤ÇÑ ´ÙÀ½ nextTokenÀ» È£ÃâÇÏ´Â ·çÇÁ¿¡ µÎ¾î TT_EOF°¡ ¸®Å쵃 ¶§±îÁö ¿¬¼ÓÀûÀÎ ÅäÅ«À» ºÐ¼®ÇÕ´Ï´Ù. public void quoteChar(int ch) : ¹®ÀÚÀÇ ÀÏÄ¡ÇÏ´Â ½ÖÀÌ ÅäÅ©³ªÀÌÀúÀÇ ¹®ÀÚ¿ »ó¼ö¸¦ ºÐ¸®Çϵµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. nextToken¸Þ¼µå°¡ ¹®ÀÚ¿ »ó¼ö¸¦ ¹ß°ßÇÏ´Â °æ¿ì, ttypeÇʵå´Â ¹®ÀÚ¿ ºÐ¸®ÀÚ·Î ¼³Á¤µÇ°í svalÇʵå´Â ¹®ÀÚ¿ º»¹®À¸·Î ¼³Á¤µË´Ï´Ù. public void commentChar(int ch) : ¹®ÀÚ Àμö°¡ ´ÜÀÏ Çà ÁÖ¼®À» ½ÃÀÛÇϵµ·Ï ÁöÁ¤ÇÕ´Ï´Ù. ½ºÆ®¸² ÅäÅ©³ªÀÌÀú´Â ÁÖ¼® ¹®ÀÚ¿¡¼ ÇàÀÇ ³¡¿¡ À̸£±â±îÁö ¸ðµç ¹®ÀÚ¸¦ ¹«½ÃÇÕ´Ï´Ù. public int lineno() : ÇöÀç Çà ¹øÈ£¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù2ºÎ ÀúÀÚ:ÃÖ¿µ°ü |