3 py�\� � @ s� d dl Z dZe jje� d dlmZmZ G dd� de�ZG dd� de�Ze dkr�e� Z e� Zxnyed �Z W n ek r� P Y nX e r^d Zer�ee je ��Zee� ee�Zeje� q^eje je �� q^W dS )� Nz2/u1/h0/jkinne/public_html/cs420-s2019/code/sly-0.4)�Lexer�Parserc @ sj e Zd Zeeeeeee e eee hZdZdZdZ dZdZdZdZdZd Zd Z dZ dZd Zdd� Zdd� ZdS )� CalcLexerz �%Zincz[a-zA-Z_][a-zA-Z0-9_]*z\d+z\+�-z\*�/�=z\(z\)z\n+c C s | j |jjd�7 _ d S )N� )�lineno�value�count)�self�t� r �5/u1/h0/jkinne/public_html/cs420-s2019/code/slyCalc.py�ignore_newline3 s zCalcLexer.ignore_newlinec C s$ t d|jd � | jd7 _d S )NzIllegal character '%s'r � )�printr �index)r r r r r �error6 s zCalcLexer.errorN)�__name__� __module__�__qualname__�NAME�NUMBER�PLUS�TIMES�MINUS�DIVIDEZASSIGNZLPARENZRPAREN�MODZINC�tokens�ignorer r r r r r r s r c @ s� e Zd ZejZdeefdeee fde ffZdd� Ze d�dd� �Ze d�d d� �Ze d �dd� �Ze d�d d� �Ze d�dd� �Ze d�dd� �Ze d�dd� �Ze d�dd� �Ze d�dd� �Ze d�dd� �Ze d�dd� �Ze d�dd� �ZdS ) � CalcParser�left�rightc C s i | _ d S )N)�names)r r r r �__init__C s zCalcParser.__init__�exprc C s t |j� d S )N)r r'