#NEWLINE# def Expression( tokenizer , staticContext ) : #NEWLINE# #INDENT# 'Top-down expression parser matched against SpiderMonkey.' #NEWLINE# builder = staticContext . builder #NEWLINE# node = AssignExpression ( tokenizer , staticContext ) #NEWLINE# if tokenizer . match ( 'comma' ) : #NEWLINE# #INDENT# childNode = builder . COMMA_build ( tokenizer ) #NEWLINE# builder . COMMA_addOperand ( childNode , node ) #NEWLINE# node = childNode #NEWLINE# while True : #NEWLINE# #INDENT# childNode = node [ ( len ( node ) - 1 ) ] #NEWLINE# if ( ( childNode . type == 'yield' ) and ( not childNode . parenthesized ) ) : #NEWLINE# #INDENT# raise SyntaxError ( 'Yield expression must be parenthesized' , tokenizer ) #NEWLINE# #UNINDENT# builder . COMMA_addOperand ( node , AssignExpression ( tokenizer , staticContext ) ) #NEWLINE# if ( not tokenizer . match ( 'comma' ) ) : #NEWLINE# #INDENT# break #NEWLINE# #UNINDENT# #UNINDENT# builder . COMMA_finish ( node ) #NEWLINE# #UNINDENT# return node