�
K�g�` � �, � d dl mZmZ d dlZd dlmZ d dlmZmZm Z m
Z
mZmZm
Z
mZmZmZmZmZ d dlmZ d dlZ d dlZn# e$ r Y nw xY werddlmZ ddlmZ dd lmZmZmZm Z dd
l!m"Z"m#Z#m$Z$ ddl%m&Z& d dl'm'Z' e(e� � Z)n
# e*$ r d
Z)Y nw xY w G d� dee� � Z+ G d� de+� � Z, G d� de+� � Z- G d� de� � Z. edd�� � Z/ G d� de0� � Z1 G d� d� � Z2 G d� d� � Z3 G d� d� � Z4d � Z5d!� Z6 G d"� d#� � Z7d$e0fd%�Z8 G d&� d'� � Z9 G d(� d)� � Z:ee1ge1f Z; G d*� d+e� � Z<d5d-e e.e0f fd.�Z= G d/� d0e<� � Z> G d1� d2e>� � Z? G d3� d4e<� � Z@dS )6� )�abstractmethod�ABCN)�suppress)�TypeVar�Type�Dict�Iterator�
Collection�Callable�Optional� FrozenSet�Any�ClassVar�
TYPE_CHECKING�overload)�
ModuleType� )� LexerConf)�ParserState)�classify�get_regexp_width� Serialize�logger)�UnexpectedCharacters�LexError�UnexpectedToken)�TOKEN_DEFAULT_PRIORITY)�copyFc � � e Zd ZU dZeed<