
    Αi                     d    S SK JrJr   " S S5      r " S S5      r " S S5      r " S S	5      rg
)   )Token	TokenTypec                        \ rS rSrS rS rSrg)	Statement   c                 (    Xl         X l        X0l        g N	left_vars
right_varsattrsselfr   r   r   s       m/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/flex_checkpoint/aoa/parser.py__init__Statement.__init__   s    "$
    c                 V    SU R                    SU R                   SU R                   S3$ )Nz
Statement(z -> z, attrs=)r
   r   s    r   __repr__Statement.__repr__   s,    DNN+4/@TUVVr   )r   r   r   N__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r      s    
Wr   r   c                        \ rS rSrS rS rSrg)Var   c                     Xl         g r	   namer   r%   s     r   r   Var.__init__   s    	r   c                     U R                   $ r	   r$   r   s    r   r   Var.__repr__    s    yyr   r$   Nr   r   r   r   r!   r!      s    r   r!   c                        \ rS rSrS rS rSrg)	Attribute$   c                     Xl         X l        g r	   keyvalue)r   r/   r0   s      r   r   Attribute.__init__%   s    
r   c                 :    U R                    SU R                  < 3$ )N=r.   r   s    r   r   Attribute.__repr__)   s    ((1TZZN++r   r.   Nr   r   r   r   r+   r+   $   s    ,r   r+   c                   b    \ rS rSrSrS rS rSS jrSS jrS r	S	 r
S
 rS rS rS rS rSrg)Parser-   a  
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                     Xl         SU l        g )N    )tokenspos)r   r:   s     r   r   Parser.__init__>   s    r   c                 X    U R                  5       R                  [        R                  :H  $ r	   )peektyper   EOFr   s    r   at_endParser.at_endB   s    yy{9==00r   c                     U R                   U-   [        U R                  5      :  a  [        [        R
                  S5      $ U R                  U R                   U-      $ )N )r;   lenr:   r   r   r@   )r   offsets     r   r>   Parser.peekE   sE    88fDKK 00++{{488f,--r   Nc                     U R                  5       nU(       a8  UR                  U:w  a(  [        SU SUR                   SU R                   35      eU =R                  S-  sl        U$ )Nz	Expected z, got z at pos r   )r>   r?   SyntaxErrorr;   )r   expected_typetoks      r   consumeParser.consumeJ   sZ    iikSXX6M?&
(488*M  	A
r   c                 $    U R                  U5      $ r	   )rL   )r   rJ   s     r   expectParser.expectS   s    ||M**r   c                     U R                  5       R                  [        R                  :X  a?  U R	                  5         U R                  5       R                  [        R                  :X  a  M>  g g r	   )r>   r?   r   NEWLINErL   r   s    r   skip_newlinesParser.skip_newlinesV   sA    iik)"3"33LLN iik)"3"33r   c                     / nU R                  5         U R                  5       (       dH  U R                  5       nUR                  U5        U R                  5         U R                  5       (       d  MH  U$ r	   )rS   rA   parse_statementappend)r   stmtsstmts      r   parse_programParser.parse_programZ   sX    ++--'')DLL  ++-- r   c                 l   U R                  5       /nU R                  5       R                  [        R                  :X  al  U R                  [        R                  5        UR                  U R                  5       5        U R                  5       R                  [        R                  :X  a  Ml  U R                  [        R                  5        U R                  5       /nU R                  5       R                  [        R                  :X  a  U R                  S5      R                  [        R                  :X  a.  U R                  S5      R                  [        R                  :X  a  OlU R                  [        R                  5        UR                  U R                  5       5        U R                  5       R                  [        R                  :X  a  M  / nU R                  5       R                  [        R                  :X  a/  U R                  [        R                  5        U R                  5       n[        XU5      $ )Nr      )	parse_varr>   r?   r   COMMArL   rW   rO   RARROW
IDENTIFIEREQUALparse_attr_listr   r   s       r   rV   Parser.parse_statementc   sg   ^^%&	iik)//1LL)T^^-. iik)//1 	I$$%nn&'
iik)//1 		!!!Y%9%99IIaL%%8LL)dnn./ iik)//1 99;y.LL)((*E66r   c                 j    U R                  [        R                  5      R                  n[	        U5      $ r	   )rO   r   ra   r0   r!   r&   s     r   r^   Parser.parse_vary   s&    {{9//0664yr   c                 X   U R                  5       /nU R                  5       R                  [        R                  :X  al  U R                  [        R                  5        UR                  U R                  5       5        U R                  5       R                  [        R                  :X  a  Ml  U$ r	   )parse_attributer>   r?   r   r_   rL   rW   )r   r   s     r   rc   Parser.parse_attr_list}   sq    %%'(iik)//1LL)LL--/0 iik)//1 r   c                    U R                  [        R                  5      R                  nU R                  [        R                  5        U R                  5       nUR                  [        R                  :X  a  [        UR                  5      nOWUR                  [        R                  :X  a+  UR                  R                  S5      R                  S5      nO[        SU 35      e[        X5      $ )N"'zUnexpected value: )rO   r   ra   r0   rb   rL   r?   NUMBERintSTRINGstriprI   r+   )r   r/   val_tokvals       r   rh   Parser.parse_attribute   s    kk)../55IOO$,,.<<9+++gmm$C\\Y-----%%c*005C 27)<==""r   )r;   r:   )r9   r	   )r   r   r   r   __doc__r   rA   r>   rL   rO   rS   rZ   rV   r^   rc   rh   r   r   r   r   r6   r6   -   s>     1.
+7,
#r   r6   N)lexerr   r   r   r!   r+   r6   r   r   r   <module>rv      s6    $W W , ,a# a#r   