f ddlZddlmZGddeZdZiZeD]*Zer&e \Z Z e ee ee <+[[ [ dS)N)tokenc4eZdZ dZdZdZdZdZdZdS)Grammarci|_i|_g|_i|_dg|_i|_i|_i|_d|_dS)N)rEMPTY) symbol2number number2symbolstatesdfaslabelskeywordstokens symbol2labelstart)selfs GREATER = EQUAL . DOT % PERCENT ` BACKQUOTE { LBRACE } RBRACE @ AT @= ATEQUAL == EQEQUAL != NOTEQUAL <> NOTEQUAL <= LESSEQUAL >= GREATEREQUAL ~ TILDE ^ CIRCUMFLEX << LEFTSHIFT >> RIGHTSHIFT ** DOUBLESTAR += PLUSEQUAL -= MINEQUAL *= STAREQUAL /= SLASHEQUAL %= PERCENTEQUAL &= AMPEREQUAL |= VBAREQUAL ^= CIRCUMFLEXEQUAL <<= LEFTSHIFTEQUAL >>= RIGHTSHIFTEQUAL **= DOUBLESTAREQUAL // DOUBLESLASH //= DOUBLESLASHEQUAL -> RARROW := COLONEQUAL ) rrobjectr opmap_rawopmap splitlineslinesplitopnamer+r8rrrBs  j#j#j#j#j#fj#j#j#^1  f   " "))D )::<<DGE4((b "dddr