
    h                         S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
JrJrJrJrJrJr  SSKJrJr  SSKJrJrJrJrJr  SSKJrJrJrJrJr  S\4S jrg)	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                 *   [        U 5      n[        U[        R                  5      (       a  UnUR	                  S5        U$ [
        R                  R                  U5      n[        U[        R                  5      (       a  UnUR	                  S5        U$ U$ )NzCode contains an invalid tokenz&Syntax error while forming syntax tree)r
   
isinstanceerror	Traceback	elaborateurclcstr   from_tokens)r   tokenserrcsts       ,/mnt/public/Repos/urclelf/./urcl/__init__.pyparser"      su    fF&%//**6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.      sF   O      c c c * _ _ D  D# r#   