token — 파이썬 파스 트리와 함께 쓰는 상수들

token — 파이썬 파스 트리와 함께 쓰는 상수들

token 모듈은 파스 트리의 잎 노드(terminal token, 종단 토큰)의 숫자 값을 나타내는 상수들을 제공해요. 이런 이름들이 언어 문법의 맥락에서 뭘 뜻하는지는 파이썬 배포판의 Grammar/Tokens 파일을 참고하세요. 이름이 매핑되는 구체적인 숫자 값은 파이썬 버전마다 달라질 수 있어요.

이 모듈은 숫자 코드 → 이름 매핑과 몇 가지 함수도 제공합니다. 이 함수들은 파이썬 C 헤더 파일의 정의를 그대로 반영해요.

토큰의 값은 토크나이저 옵션에 따라 달라질 수 있다는 점에 주의하세요. 예를 들어 "+" 토큰은 PLUS 또는 OP로 보고될 수 있고, "match" 토큰은 NAME 또는 SOFT_KEYWORD일 수 있어요.

출처: Python 표준 라이브러리 — token

본문

token.tok_name — 이 모듈에 정의된 상수의 숫자 값을 다시 이름 문자열로 매핑하는 딕셔너리로, 파스 트리를 더 사람이 읽기 좋게 표현할 수 있게 해 줍니다.

token.ISTERMINAL(x) — 종단 토큰 값이면 True를 반환.

token.ISNONTERMINAL(x) — 비종단 토큰 값이면 True를 반환.

token.ISEOF(x)x가 입력 끝을 나타내는 마커면 True를 반환.

토큰 상수들

  • token.NAME — 식별자 또는 키워드를 나타내는 토큰 값.
  • token.NUMBER — 숫자 리터럴을 나타내는 토큰 값.
  • token.STRING — 문자열 또는 바이트 리터럴을 나타내는 토큰 값. 형식화된 문자열 리터럴(f-string)은 제외. 토큰 문자열은 해석되지 않아요. 주변 따옴표와 (주어진 경우) 프리픽스를 포함하고, 백슬래시는 이스케이프 시퀀스를 처리하지 않은 채 문자 그대로 포함됩니다.
  • token.OP — 연산자(oprator) 또는 구분자(delimiter)를 나타내는 일반 토큰 값.
    • CPython 구현 세부 사항: 이 값은 tokenize 모듈만 보고합니다. 내부적으로 토크나이저는 정확한 토큰 타입을 사용해요.
  • token.COMMENT — 주석을 나타내는 토큰 값. 파서는 COMMENT 토큰을 무시해요.
  • token.NEWLINE — 논리 줄의 끝을 나타내는 토큰 값.
  • token.NL — 종결되지 않는(끝나지 않는) 개행을 나타내는 토큰 값. 논리 코드 줄이 여러 물리 줄에 걸쳐 이어질 때 NL 토큰이 생성됩니다. 파서는 NL 토큰을 무시해요.
  • token.INDENT — 논리 줄의 시작에서 들여쓴 블록의 시작을 나타내는 토큰 값.
  • token.DEDENT — 논리 줄의 시작에서 들여쓴 블록의 끝을 나타내는 토큰 값.
  • token.FSTRING_START — f-string 리터럴의 시작을 나타내는 토큰 값.
    • CPython 구현 세부 사항: 토큰 문자열은 프리픽스와 여는 따옴표를 포함하지만 리터럴의 내용은 포함하지 않아요.
  • token.FSTRING_MIDDLE — f-string 리터럴 안의 리터럴 텍스트(포맷 지정 포함)에 쓰이는 토큰 값.
    • CPython 구현 세부 사항: 대체 필드(f-string의 비-리터럴 부분)는 다른 표현식과 같은 토큰을 사용하며, LBRACE, RBRACE, EXCLAMATION, COLON 토큰으로 구분됩니다.
  • token.FSTRING_END — f-string의 끝을 나타내는 토큰 값.
    • CPython 구현 세부 사항: 토큰 문자열은 닫는 따옴표를 포함해요.
  • token.TSTRING_START — 템플릿 문자열 리터럴의 시작을 나타내는 토큰 값. / CPython 구현 세부 사항: 토큰 문자열은 프리픽스와 여는 따옴표를 포함하지만 리터럴의 내용은 포함하지 않아요. / 버전 3.14에서 추가.
  • token.TSTRING_MIDDLE — 템플릿 문자열 리터럴 안의 리터럴 텍스트(포맷 지정 포함)에 쓰이는 토큰 값. / CPython 구현 세부 사항: 대체 필드(t-string의 비-리터럴 부분)는 다른 표현식과 같은 토큰을 사용하며, LBRACE, RBRACE, EXCLAMATION, COLON 토큰으로 구분됩니다. / 버전 3.14에서 추가.
  • token.TSTRING_END — 템플릿 문자열 리터럴의 끝을 나타내는 토큰 값. / CPython 구현 세부 사항: 토큰 문자열은 닫는 따옴표를 포함해요. / 버전 3.14에서 추가.
  • token.ENDMARKER — 입력의 끝을 나타내는 토큰 값. 최상위 문법 규칙에서 쓰여요.
  • token.ENCODING — 소스 바이트를 텍스트로 디코딩하는 데 쓰인 인코딩을 나타내는 토큰 값. tokenize.tokenize()가 반환하는 첫 토큰은 항상 ENCODING 토큰이에요.
    • CPython 구현 세부 사항: 이 토큰 타입은 C 토크나이저가 쓰지 않지만 tokenize 모듈에는 필요해요.

다음 토큰 타입들은 tokenize 모듈이 생성하지 않으며, 토크나이저나 파서의 특수한 용도로 정의됩니다.

  • token.TYPE_IGNOREtype: ignore 주석이 인식됐음을 나타내는 토큰 값. 이런 토큰은 PyCF_TYPE_COMMENTS 플래그가 있을 때만 일반 COMMENT 토큰 대신 생성됩니다.
  • token.TYPE_COMMENT — 타입 주석이 인식됐음을 나타내는 토큰 값. PyCF_TYPE_COMMENTS 플래그가 있을 때만 일반 COMMENT 토큰 대신 생성됩니다.
  • token.SOFT_KEYWORD — 소프트 키워드를 나타내는 토큰 값. 토크나이저는 이 값을 절대 생성하지 않아요. 소프트 키워드를 확인하려면 NAME 토큰의 문자열을 keyword.issoftkeyword()에 넘기면 됩니다.
  • token.ERRORTOKEN — 잘못된 입력을 나타내는 토큰 값. tokenize 모듈은 보통 이 토큰을 내보내는 대신 예외를 일으켜서 오류를 나타내요. 파서가 나중에 거부할 문자열을 가진 OPNAME 같은 토큰을 내보낼 수도 있습니다.

나머지 토큰들은 특정 연산자와 구분자를 나타내요. (tokenize 모듈은 이들을 OP로 보고하며, 자세한 내용은 tokenize 문서의 exact_type을 참고하세요.)

Token Value
token.LPAR "("
token.RPAR ")"
token.LSQB "["
token.RSQB "]"
token.COLON ":"
token.COMMA ","
token.SEMI ";"
token.PLUS "+"
token.MINUS "-"
token.STAR "*"
token.SLASH "/"
token.VBAR `"
token.AMPER "&"
token.LESS "<"
token.GREATER ">"
token.EQUAL "="
token.DOT "."
token.PERCENT "%"
token.LBRACE "{"
token.RBRACE "}"
token.EQEQUAL "=="
token.NOTEQUAL "!="
token.LESSEQUAL "<="
token.GREATEREQUAL ">="
token.TILDE "~"
token.CIRCUMFLEX "^"
token.LEFTSHIFT "<<"
token.RIGHTSHIFT ">>"
token.DOUBLESTAR "**"
token.PLUSEQUAL "+="
token.MINEQUAL "-="
token.STAREQUAL "*="
token.SLASHEQUAL "/="
token.PERCENTEQUAL "%="
token.AMPEREQUAL "&="
token.VBAREQUAL `"
token.CIRCUMFLEXEQUAL "^="
token.LEFTSHIFTEQUAL "<<="
token.RIGHTSHIFTEQUAL ">>="
token.DOUBLESTAREQUAL "**="
token.DOUBLESLASH "//"
token.DOUBLESLASHEQUAL "//="
token.AT "@"
token.ATEQUAL "@="
token.RARROW "->"
token.ELLIPSIS "..."
token.COLONEQUAL ":="
token.EXCLAMATION "!"

비토큰 상수

  • token.N_TOKENS — 이 모듈에 정의된 토큰 타입의 개수.
  • token.EXACT_TOKEN_TYPES — 토큰의 문자열 표현을 숫자 코드에 매핑하는 딕셔너리. / 버전 3.8에서 추가.

버전 이력:

  • 버전 3.5에서 변경: AWAIT·ASYNC 토큰 추가.
  • 버전 3.7에서 변경: COMMENT·NL·ENCODING 토큰 추가. 또 AWAIT·ASYNC 토큰 제거 — 이제 "async"와 "await"는 NAME 토큰으로 토큰화됩니다.
  • 버전 3.8에서 변경: TYPE_COMMENT·TYPE_IGNORE·COLONEQUAL 추가. AWAIT·ASYNC 토큰을 다시 추가(기존 파이썬 버전을 파싱하기 위해 ast.parse()feature_version이 6 이하일 때 필요).
  • 버전 3.12에서 변경: EXCLAMATION 추가.
  • 버전 3.13에서 변경: AWAIT·ASYNC 토큰을 다시 제거.