(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'USAGE: '> ($ Id.VSub_Number '$0') <' DISTFILE'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [47 64] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-e>} {($ Id.VSub_Number '$1')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {($ Id.VSub_Number '$1') (DQ <': File not found.'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [86 99] ) ] ) (C {<set>} {<-ex>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LANGUAGES) op: assign_op.Equal rhs: {(DQ <'cpp csharp java javanano js objectivec python ruby php'>)} spids: [125] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASENAME) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<basename>} {($ Id.VSub_Number '$1')} {<.tar.gz>}) ) } spids: [130] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERSION) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name BASENAME> suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 9>}) ) } spids: [141] ) ] ) (C {<mkdir>} {<dist>}) (C {<cp>} {($ Id.VSub_Number '$1')} {<dist>}) (C {<cd>} {<dist>}) (C {<tar>} {<zxvf>} {($ Id.VSub_DollarName '$BASENAME') <.tar.gz>}) (C {<rm>} {($ Id.VSub_DollarName '$BASENAME') <.tar.gz>}) (C {<chmod>} {<-R>} {<u> <Id.Lit_Other '+'> <w>} {($ Id.VSub_DollarName '$BASENAME')}) (C {<cd>} {($ Id.VSub_DollarName '$BASENAME')}) (command.ForEach iter_name: LANG iter_words: [{($ Id.VSub_DollarName '$LANGUAGES')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<'./configure'>} {<Id.Lit_VarLike 'DIST_LANG='> ($ Id.VSub_DollarName '$LANG')}) (C {<make>} {<dist-gzip>}) (C {<mv>} {($ Id.VSub_DollarName '$BASENAME') <.tar.gz>} {<'../protobuf-'> ($ Id.VSub_DollarName '$LANG') <-> ($ Id.VSub_DollarName '$VERSION') <.tar.gz> } ) ] ) ) (C {<todos>} {<Id.Lit_Star '*'> <.txt>} {<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> <.txt>}) (command.ForEach iter_name: LANG iter_words: [{($ Id.VSub_DollarName '$LANGUAGES')}] do_arg_iter: F body: (command.DoGroup children: [ (C {<'./configure'>} {<Id.Lit_VarLike 'DIST_LANG='> ($ Id.VSub_DollarName '$LANG')}) (C {<make>} {<dist-zip>}) (C {<mv>} {($ Id.VSub_DollarName '$BASENAME') <.zip>} {<'../protobuf-'> ($ Id.VSub_DollarName '$LANG') <-> ($ Id.VSub_DollarName '$VERSION') <.zip> } ) ] ) ) (C {<cd>} {<..>}) (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$BASENAME')}) ] )