(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-o>} {<nounset>})
    (C {<Id.KW_Set set>} {<-o>} {<errexit>})
    (C {<readonly>} {<Id.Lit_VarLike 'LLVM_PROJECT_SVN='> (DQ <'http://llvm.org/svn/llvm-project'>)})
    (command.ShFunction
      name: getLatestRevisionFromSVN
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<svn>} {<info>} {(${ Id.VSub_Name LLVM_PROJECT_SVN)})
                (C {<egrep>} {<Id.Lit_Other '^'> <Revision>})
                (C {<sed>} {(SQ <'s/^Revision: //'>)})
              ]
              negated: F
            )
          ]
        )
    )
    (C {<readonly>} 
      {<Id.Lit_VarLike 'REV='> 
        (DQ 
          (braced_var_sub
            token: <Id.VSub_Number 1>
            suffix_op: 
              (suffix_op.Unary
                op_id: Id.VTest_ColonHyphen
                arg_word: 
                  {
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      command_list: (command.CommandList children:[(C {<getLatestRevisionFromSVN>})])
                    )
                  }
              )
          )
        )
      }
    )
    (command.ShFunction
      name: createTarballFromSVN
      body: 
        (command.BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'module='> ($ Id.VSub_Number '$1')})
            (C {<local>} {<Id.Lit_VarLike 'log='> (DQ (${ Id.VSub_Name module) <.log>)})
            (C {<echo>} 
              {
                (DQ <'Running: svn export -r '> (${ Id.VSub_Name REV) <' '> (${ Id.VSub_Name module) 
                  <'; log in '> (${ Id.VSub_Name log)
                )
              }
            )
            (command.Simple
              words: [
                {<svn>}
                {<-q>}
                {<export>}
                {<-r>}
                {(${ Id.VSub_Name REV)}
                {(${ Id.VSub_Name LLVM_PROJECT_SVN) </> (${ Id.VSub_Name module) </trunk>}
                {(${ Id.VSub_Name module)}
              ]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_Great '>'>
                  fd: -1
                  arg_word: {(${ Id.VSub_Name log)}
                )
                (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<1>})
              ]
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'tarball='> 
                (DQ (${ Id.VSub_Name module) <-> (${ Id.VSub_Name REV) <.tar.bz2>)
              }
            )
            (C {<echo>} {(DQ <'Creating tarball: '> (${ Id.VSub_Name tarball))})
            (C {<tar>} {<cjf>} {(${ Id.VSub_Name tarball)} {(${ Id.VSub_Name module)})
            (C {<echo>} {(DQ <"Cleaning up '"> (${ Id.VSub_Name module) <"'">)})
            (C {<rm>} {<-rf>} {(${ Id.VSub_Name module)} {(${ Id.VSub_Name log)})
          ]
        )
    )
    (command.ForEach
      iter_name: module
      iter_words: [{(DQ <llvm>)} {(DQ <llvm-gcc-4.2>)}]
      do_arg_iter: F
      body: (command.DoGroup children:[(C {<createTarballFromSVN>} {(${ Id.VSub_Name module)})])
    )
  ]
)