StreamTokenizer — 입력 스트림을 토큰으로 분해
StreamTokenizer — 입력 스트림을 토큰으로 분해
StreamTokenizer는 문자 입력 스트림(예: 파서)을 토큰(tokens)으로 분해하는 클래스예요. 토크나이저는 문자 집합에 따라 토큰을 인식하며, 파서에 필요한 구분 문자, 숫자, 단어, 주석 등을 정의해 입력을 토큰 스트림으로 변환해요.
본문
이 클래스는 java.lang.Object를 상속합니다. resetSyntax, wordChars, whitespaceChars, ordinaryChars, commentChar, quoteChar, slashSlashComments, slashStarComments, lowerCaseMode, parseNumbers 등의 메서드로 토큰화 규칙을 구성할 수 있어요. nextToken()을 호출하면 다음 토큰의 타입을 ttype 필드에 설정하고, 토큰의 텍스트는 sval/nval 필드에 저장합니다.
주요 필드
int ttype— 방금 읽은 토큰의 타입이에요. 값으로는 상수TT_EOF,TT_EOL,TT_NUMBER,TT_WORD, 또는 단일 문자(구분자·인용 부호)가 있어요.String sval— 토큰이 단어(TT_WORD)나 인용 문자열이면 그 문자열이에요.double nval— 토큰이 숫자(TT_NUMBER)면 그 숫자 값이에요.int lineno— 현재 줄 번호예요.
주요 상수
TT_EOF— 스트림 끝에 도달했음을 나타내요.TT_EOL— 줄 끝에 도달했음을 나타내요.TT_NUMBER— 숫자 토큰을 나타내요.TT_WORD— 단어 토큰을 나타내요.
주요 메서드
int nextToken()— 다음 토큰을 분석해 반환해요.void resetSyntax()— 모든 문자를 평범한 문자로 재설정해요.void wordChars(int low, int hi)— 단어 문자로 지정된 범위의 문자를 표시해요.void whitespaceChars(int low, int hi)— 공백 문자로 지정해요.void ordinaryChars(int low, int hi),void ordinaryChar(int ch)— 평범한 문자로 지정해요.void commentChar(int ch)— 한 줄 주석 문자로 지정해요.void quoteChar(int ch)— 인용 문자로 지정해요.void parseNumbers()— 숫자를 파싱하도록 해요.void eolIsSignificant(boolean flag)— 줄 끝을 토큰으로 취급할지 정해요.void lowerCaseMode(boolean fl)— 단어를 소문자로 만들지 정해요.void pushBack()— 다음에 다시 읽도록 토큰을 되돌려요.
StreamTokenizer는 설정 파일이나 간단한 언어의 파서를 만들 때 입력을 단어·숫자·기호 토큰으로 쪼개는 데 사용돼요.