#NEWLINE# def AssignExpression( tokenizer , staticContext ) : #NEWLINE# #INDENT# builder = staticContext . builder #NEWLINE# if tokenizer . match ( 'yield' , True ) : #NEWLINE# #INDENT# return returnOrYield ( tokenizer , staticContext ) #NEWLINE# #UNINDENT# comments = tokenizer . getComments ( ) #NEWLINE# node = builder . ASSIGN_build ( tokenizer ) #NEWLINE# lhs = ConditionalExpression ( tokenizer , staticContext ) #NEWLINE# builder . COMMENTS_add ( lhs , None , lhs ) #NEWLINE# if ( not tokenizer . match ( 'assign' ) ) : #NEWLINE# #INDENT# builder . ASSIGN_finish ( node ) #NEWLINE# return lhs #NEWLINE# #UNINDENT# if ( ( lhs . type == 'object_init' ) or ( lhs . type == 'array_init' ) ) : #NEWLINE# #INDENT# checkDestructuring ( tokenizer , staticContext , lhs ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if ( ( lhs . type == 'identifier' ) or ( lhs . type == 'dot' ) or ( lhs . type == 'index' ) or ( lhs . type == 'call' ) ) : #NEWLINE# #INDENT# pass #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# raise SyntaxError ( 'Bad left-hand side of assignment' , tokenizer ) #NEWLINE# #UNINDENT# #UNINDENT# builder . ASSIGN_setAssignOp ( node , tokenizer . token . assignOp ) #NEWLINE# builder . ASSIGN_addOperand ( node , lhs ) #NEWLINE# builder . ASSIGN_addOperand ( node , AssignExpression ( tokenizer , staticContext ) ) #NEWLINE# builder . ASSIGN_finish ( node ) #NEWLINE# return node