
    x-j                     ~    d dl mZmZ  G d d          Z G d d          Z G d d          Z G d d	          Zd
S )   )Token	TokenTypec                       e Zd Zd Zd ZdS )	Statementc                 0    || _         || _        || _        d S N	left_vars
right_varsattrsselfr
   r   r   s       m/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/distributed/flex_checkpoint/aoa/parser.py__init__zStatement.__init__   s    "$


    c                 8    d| j          d| j         d| j         dS )Nz
Statement(z -> z, attrs=)r	   r   s    r   __repr__zStatement.__repr__   s)    VDNVVVVVVVVr   N__name__
__module____qualname__r   r    r   r   r   r      s7          
W W W W Wr   r   c                       e Zd Zd Zd ZdS )Varc                     || _         d S r   namer   r   s     r   r   zVar.__init__   s    			r   c                     | j         S r   r   r   s    r   r   zVar.__repr__    s
    yr   Nr   r   r   r   r   r      s2              r   r   c                       e Zd Zd Zd ZdS )	Attributec                 "    || _         || _        d S r   keyvalue)r   r&   r'   s      r   r   zAttribute.__init__%   s    


r   c                 $    | j          d| j        S )N=r%   r   s    r   r   zAttribute.__repr__)   s    (++TZ+++r   Nr   r   r   r   r#   r#   $   s2          , , , , ,r   r#   c                   X    e Zd ZdZd Zd ZddZddZd Zd	 Z	d
 Z
d Zd Zd Zd ZdS )Parsera*  
    AOA Grammar
    PROGRAM   ::= { STATEMENT }

    STATEMENT ::= VAR_LIST '->' VAR ',' ATTR_LIST       // meige
                | VAR '->' VAR_LIST ',' ATTR_LIST       // split
                | VAR '->' VAR ',' ATTR_LIST            // single variable mapping + attributes
                | VAR '->' VAR                          // single variable mapping, rename

    VAR_LIST  ::= VAR { ',' VAR }
    VAR       ::= IDENTIFIER
    ATTR_LIST ::= ATTRIBUTE { ',' ATTRIBUTE }
    ATTRIBUTE ::= IDENTIFIER '=' VALUE
    VALUE     ::= NUMBER | STRING
    c                 "    || _         d| _        d S )N    )tokenspos)r   r.   s     r   r   zParser.__init__>   s    r   c                 P    |                                  j        t          j        k    S r   )peektyper   EOFr   s    r   at_endzParser.at_endB   s    yy{{9=00r   r-   c                     | j         |z   t          | j                  k    rt          t          j        d          S | j        | j         |z            S )N )r/   lenr.   r   r   r3   )r   offsets     r   r1   zParser.peekE   sD    8fDK 0 000+++{48f,--r   Nc                     |                                  }|r-|j        |k    r"t          d| d|j         d| j                   | xj        dz  c_        |S )Nz	Expected z, got z at pos r   )r1   r2   SyntaxErrorr/   )r   expected_typetoks      r   consumezParser.consumeJ   sj    iikk 	SX66MMMMMM48MM   	A
r   c                 ,    |                      |          S r   )r=   )r   r;   s     r   expectzParser.expectS   s    ||M***r   c                     |                                  j        t          j        k    r=|                                  |                                  j        t          j        k    ;d S d S r   )r1   r2   r   NEWLINEr=   r   s    r   skip_newlineszParser.skip_newlinesV   sO    iikk)"333LLNNN iikk)"3333333r   c                     g }|                                   |                                 sQ|                                 }|                    |           |                                   |                                 Q|S r   )rB   r4   parse_statementappend)r   stmtsstmts      r   parse_programzParser.parse_programZ   sw    ++-- 	!''))DLL    ++-- 	! r   c                 `   |                                  g}|                                 j        t          j        k    rm|                     t          j                   |                    |                                             |                                 j        t          j        k    m|                     t          j                   |                                  g}|                                 j        t          j        k    r|                     d          j        t          j	        k    r)|                     d          j        t          j
        k    rnm|                     t          j                   |                    |                                             |                                 j        t          j        k    g }|                                 j        t          j        k    r3|                     t          j                   |                                 }t          |||          S )Nr      )	parse_varr1   r2   r   COMMAr=   rE   r?   RARROW
IDENTIFIEREQUALparse_attr_listr   r   s       r   rD   zParser.parse_statementc   s   ^^%%&	iikk)/11LL)))T^^--... iikk)/11 	I$%%%nn&&'
iikk)/11 		!!Y%999IIaLL%88LL)))dnn../// iikk)/11 99;;y..LL)))((**EJ666r   c                 h    |                      t          j                  j        }t	          |          S r   )r?   r   rN   r'   r   r    s     r   rK   zParser.parse_vary   s%    {{9/0064yyr   c                 X   |                                  g}|                                 j        t          j        k    rm|                     t          j                   |                    |                                             |                                 j        t          j        k    m|S r   )parse_attributer1   r2   r   rL   r=   rE   )r   r   s     r   rP   zParser.parse_attr_list}   s    %%''(iikk)/11LL)))LL--//000 iikk)/11 r   c                    |                      t          j                  j        }|                      t          j                   |                                 }|j        t          j        k    rt          |j                  }nU|j        t          j	        k    r.|j        
                    d          
                    d          }nt          d|           t          ||          S )N"'zUnexpected value: )r?   r   rN   r'   rO   r=   r2   NUMBERintSTRINGstripr:   r#   )r   r&   val_tokvals       r   rS   zParser.parse_attribute   s    kk).//5IO$$$,,..<9+++gm$$CC\Y----%%c**0055CC<7<<===c"""r   )r-   r   )r   r   r   __doc__r   r4   r1   r=   r?   rB   rH   rD   rK   rP   rS   r   r   r   r+   r+   -   s            1 1 1. . . .
   + + +    7 7 7,    
# 
# 
# 
# 
#r   r+   N)lexerr   r   r   r   r#   r+   r   r   r   <module>r_      s    $ # # # # # # #W W W W W W W W       , , , , , , , ,a# a# a# a# a# a# a# a# a# a#r   