token — Python 파스 트리와 함께 사용하는 상수

token — Python 파스 트리와 함께 사용하는 상수

이 모듈은 파스 트리의 잎 노드(terminal token, 종결 토큰)의 숫자 값을 나타내는 상수를 제공해요. 언어 문법(context)에서 이름의 정의는 Python 배포판의 Grammar/Tokens 파일을 참고하세요. 이름이 매핑되는 구체적인 숫자 값은 Python 버전 사이에 바뀔 수 있어요.

이 모듈은 숫자 코드에서 이름으로의 매핑과 함수 몇 개도 제공해요. 이 함수들은 Python C 헤더 파일의 정의를 반영해요.

출처: Python documentation

본문

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

token.tok_name

이 모듈에 정의된 상수의 숫자 값을 다시 이름 문자열로 매핑하는 사전으로, 파스 트리를 더 사람이 읽기 쉬운 형태로 표현할 수 있게 해줘요.

token.ISTERMINAL(x)

종결 토큰(terminal token) 값이면 True를 반환해요.

token.ISNONTERMINAL(x)

비종결 토큰(non-terminal token) 값이면 True를 반환해요.

token.ISEOF(x)

x가 입력 끝을 나타내는 표시이면 True를 반환해요.

토큰 상수

토큰 상수는 다음과 같아요:

  • token.NAME — 식별자 또는 키워드를 나타내는 토큰 값
  • token.NUMBER — 숫자 리터럴을 나타내는 토큰 값
  • token.STRING — 문자열 또는 바이트 리터럴을 나타내는 토큰 값(포맷 문자열 리터럴 제외). 토큰 문자열은 해석되지 않아요. 즉 주변 따옴표와 접두사(있으면)를 포함하며, 백슬래시는 이스케이프 시퀀스를 처리하지 않고 그대로 포함돼요.
  • token.OP — 연산자 또는 구분자(delimiter)를 나타내는 일반 토큰 값. CPython 구현 상세: 이 값은 tokenize 모듈만 보고하며, 내부적으로 토크나이저는 정확한(exact) 토큰 타입을 사용해요.
  • 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 — 템플릿 문자열 리터럴의 시작을 나타내는 토큰 값. (버전 3.14에서 추가)
  • token.TSTRING_MIDDLE — 템플릿 문자열 리터럴 내부의 리터럴 텍스트에 사용하는 토큰 값. (버전 3.14에서 추가)
  • token.TSTRING_END — 템플릿 문자열 리터럴의 끝을 나타내는 토큰 값. (버전 3.14에서 추가)
  • token.ENDMARKER — 입력의 끝을 나타내는 토큰 값. 최상위 문법 규칙에서 사용해요.
  • token.ENCODING — 소스 바이트를 텍스트로 디코딩하는 데 사용한 인코딩을 나타내는 토큰 값. tokenize.tokenize()가 반환하는 첫 번째 토큰은 항상 ENCODING 토큰이에요.
  • token.TYPE_IGNOREtype: ignore 주석이 인식되었음을 나타내는 토큰 값. PyCF_TYPE_COMMENTS 플래그가 있을 때만 일반 COMMENT 토큰 대신 생성돼요.
  • token.TYPE_COMMENT — 타입 주석이 인식되었음을 나타내는 토큰 값. PyCF_TYPE_COMMENTS 플래그가 있을 때만 생성돼요.
  • token.SOFT_KEYWORD — 소프트 키워드를 나타내는 토큰 값. 토크나이저는 이 값을 생성하지 않아요. 소프트 키워드를 확인하려면 NAME 토큰의 문자열을 keyword.issoftkeyword()에 전달해요.
  • token.ERRORTOKEN — 잘못된 입력을 나타내는 토큰 값. tokenize 모듈은 일반적으로 이 토큰을 내보내는 대신 예외를 발생시켜 오류를 나타내요.

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

토큰 토큰
LPAR "(" RPAR ")"
LSQB "[" RSQB "]"
COLON ":" COMMA ","
SEMI ";" PLUS "+"
MINUS "-" STAR "*"
SLASH "/" VBAR "|"
AMPER "&" LESS "<"
GREATER ">" EQUAL "="
DOT "." PERCENT "%"
LBRACE "{" RBRACE "}"
EQEQUAL "==" NOTEQUAL "!="
LESSEQUAL "<=" GREATEREQUAL ">="
TILDE "~" CIRCUMFLEX "^"
LEFTSHIFT "<<" RIGHTSHIFT ">>"
DOUBLESTAR "**" PLUSEQUAL "+="
MINEQUAL "-=" STAREQUAL "*="
SLASHEQUAL "/=" PERCENTEQUAL "%="
AMPEREQUAL "&=" VBAREQUAL "|="
CIRCUMFLEXEQUAL "^=" LEFTSHIFTEQUAL "<<="
RIGHTSHIFTEQUAL ">>=" DOUBLESTAREQUAL "**="
DOUBLESLASH "//" DOUBLESLASHEQUAL "//="
AT "@" ATEQUAL "@="
RARROW "->" ELLIPSIS "..."
COLONEQUAL ":=" 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 토큰 다시 추가
  • 버전 3.12: EXCLAMATION 추가
  • 버전 3.13: AWAIT와 ASYNC 토큰 다시 제거

더 알아보기 (Learn more)