File: //usr/lib/python3.6/site-packages/jinja2/__pycache__/lexer.cpython-36.opt-1.pyc
3
�G�\�o � # @ s� d Z ddlZddlmZ ddlmZ ddlmZmZm Z m
Z
ddlmZ ddl
mZ ed�Zejd ej�Zejd
ej�Zejd�Zyedd
d� W n" ek
r� ejd�ZdZY nBX ddlmZ ejdjej��ZdZddlZejd= ddlZe`[ejd�Zejd�Z ed�Z!ed�Z"ed�Z#ed�Z$ed�Z%ed�Z&ed�Z'ed�Z(ed�Z)ed �Z*ed!�Z+ed"�Z,ed#�Z-ed$�Z.ed%�Z/ed&�Z0ed'�Z1ed(�Z2ed)�Z3ed*�Z4ed+�Z5ed,�Z6ed-�Z7ed.�Z8ed/�Z9ed0�Z:ed1�Z;ed2�Z<ed3�Z=ed4�Z>ed5�Z?ed6�Z@ed7�ZAed8�ZBed9�ZCed:�ZDed;�ZEed<�ZFed=�ZGed>�ZHed?�ZIed@�ZJedA�ZKedB�ZLedC�ZMedD�ZNedE�ZOedF�ZPedG�ZQe!e9e%e(e1e0e4e:e,e6e-e7e+e5e'e2e)e*e.e/e"e&e#e3e$e8dH�ZReSdIdJ� e eR�D ��ZTejdKdLjUdMdN� eVeRdOdP� dQ�D �� �ZWeXeGeIeHe;eLeMeNg�ZYeXe;eOeIeNg�ZZdRdS� Z[dTdU� Z\dVdW� Z]dXdY� Z^dZd[� Z_G d\d]� d]e`�ZaG d^d_� d_eb�ZceG d`da� dae`��ZdeG dbdc� dce`��Zeddde� ZfG dfdg� dge`�ZgdS )ha�
jinja2.lexer
~~~~~~~~~~~~
This module implements a Jinja / Python combination lexer. The
`Lexer` class provided by this module is used to do some preprocessing
for Jinja.
On the one hand it filters out invalid operators like the bitshift
operators we don't allow in templates. On the other hand it separates
template code and python code in expressions.
:copyright: (c) 2017 by the Jinja Team.
:license: BSD, see LICENSE for more details.
� N)�deque)�
itemgetter)�implements_iterator�intern� iteritems� text_type)�TemplateSyntaxError)�LRUCache�2 z\s+z7('([^'\\]*(?:\\.[^'\\]*)*)'|"([^"\\]*(?:\\.[^"\\]*)*)")z\d+u fööz <unknown>�evalz[a-zA-Z_][a-zA-Z0-9_]*F)�_identifierz[\w{0}]+Tzjinja2._identifierz(?<!\.)\d+\.\d+z(\r\n|\r|\n)�addZassignZcolonZcommaZdiv�dot�eq�floordiv�gtZgteqZlbraceZlbracketZlparen�ltZlteq�mod�mul�ne�pipe�powZrbraceZrbracketZrparenZ semicolon�sub�tildeZ
whitespace�float�integer�name�string�operator�block_begin� block_endZvariable_begin�variable_end� raw_begin�raw_endZ
comment_beginZcomment_end�comment�linestatement_begin�linestatement_endZlinecomment_beginZlinecomment_end�linecomment�data�initial�eof)�+�-�/z//�*�%z**�~�[�]�(�)�{�}z==z!=�>z>=�<z<=�=�.�:�|�,�;c C s g | ]\}}||f�qS � r? )�.0�k�vr? r? �/usr/lib/python3.6/lexer.py�
<listcomp>� s rD z(%s)r<