
    h                         d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
mZmZmZmZmZmZ ddlmZmZ ddlmZmZmZmZmZ ddlmZmZmZmZmZ defdZdS )	zThis module provides types for representing, validating, and parsing URCL code.
URCL is a toy assembly-like langauge originally designed to target computers in Minecraft.
Informal documentation can be found at https://github.com/ModPunchtree/URCL    N)MnemonicGeneralRegisterBasePointerStackPointerPortLabel	Character)tokenizeTokenStream)CSTInstructionCSTNodeOperandCSTNodeOperandTypeDefinedImmediate) TWO_OPERAND_ARITHMETIC_MNEMONICS$TWO_OPERAND_CONDITION_JUMP_MNEMONICS&THREE_OPERAND_CONDITION_JUMP_MNEMONICSZERO_OPERAND_MNEMONICS"THREE_OPERAND_ARITHMETIC_MNEMONICSsourcec                 .   t          |           }t          |t          j                  r|}|                    d           |S t
          j                            |          }t          |t          j                  r|}|                    d           |S |S )NzCode contains an invalid tokenz&Syntax error while forming syntax tree)r
   
isinstanceerror	Traceback	elaborateurclcstr   from_tokens)r   tokenserrcsts       7/home/seanl/mnt/public/Repos/urclelf/./urcl/__init__.pyparser"      s    fF&%/** 6777

+
!
!&
)
)C#u'' >???
J    )__doc__r   
urcl.typestypesurcl.lexlexurcl.urclcstr   urcl.urclasturclastr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   strr"    r#   r!   <module>r.      sU  O O                          c c c c c c c c c c c c c c c c c c * * * * * * * * _ _ _ _ _ _ _ _ _ _ _ _ _ _ D  D  D  D  D  D  D  D  D  D  D  D  D  D#      r#   