StreamTokenizer — 입력 스트림을 토큰으로 분해

StreamTokenizer — 입력 스트림을 토큰으로 분해

StreamTokenizer는 문자 입력 스트림(예: 파서)을 토큰(tokens)으로 분해하는 클래스예요. 토크나이저는 문자 집합에 따라 토큰을 인식하며, 파서에 필요한 구분 문자, 숫자, 단어, 주석 등을 정의해 입력을 토큰 스트림으로 변환해요.

출처: Java API Reference

본문

이 클래스는 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는 설정 파일이나 간단한 언어의 파서를 만들 때 입력을 단어·숫자·기호 토큰으로 쪼개는 데 사용돼요.

더 알아보기 (Learn more)