Mini Shell
3
�CZ� � @ s( d dl Z G dd� d�ZG dd� d�ZdS )� Nc @ s, e Zd Zdd� Zdd� Zdd� Zdd� Zd S )
�Tokenc C s || _ || _d S )N)�klass�data)�selfr r � r �+/usr/lib64/gedit/plugins/snippets/parser.py�__init__ s zToken.__init__c C s d| j | jf S )Nz%s: [%s])r r )r r r r �__str__ s z
Token.__str__c C s | j |j ko| j|jkS )N)r r )r �otherr r r �__eq__ s zToken.__eq__c C s | j |� S )N)r )r r
r r r �__ne__ s zToken.__ne__N)�__name__�
__module__�__qualname__r r r r r r r r r s r c @ s� e Zd ZdZdZejdeef �Zdd� Zdd� Z dd � Z
d
d� Zdd
� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(S ))�Parserz[A-Z_]+z[0-9]+z(\$(%s|\(|\{|<|%s)|`|\\)c K sV x |j � D ]\}}t| ||� q
W d| _t| j�| _| j| j| j| j | j
| jf| _d S )Nr )
�items�setattr�position�lenr �data_length�
_match_env�_match_regex�_match_placeholder�_match_shell�_match_eval�_text�RULES)r �kwargs�k�vr r r r ( s
zParser.__init__c C s | j | jd � S )N)r r )r r r r �remains1 s zParser.remainsc C s( | j d | jkrdS | j| j d S d S )N� � )r r r )r r r r � next_char4 s zParser.next_charc C s | j | jkrdS | j| j S d S )Nr"