(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ANTLR34_PREFIX)
          op: assign_op.Equal
          rhs: {<'/usr/local'>}
          spids: [86]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:STRINGTEMPLATE_PREFIX)
          op: assign_op.Equal
          rhs: {<'/usr'>}
          spids: [89]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MAKE)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name MAKE>
                suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<make>})
              )
            }
          spids: [93]
        )
      ]
    )
    (command.ShFunction
      name: gen_makefile
      body: 
        (BraceGroup
          children: [
            (command.ForEach
              iter_name: basepath
              iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {(DQ <'CXXFLAGS += -I'> (${ Id.VSub_Name basepath) <'/include'>)})
                  ]
                )
            )
            (command.ForEach
              iter_name: basepath
              iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} 
                      {
                        (DQ <'LDFLAGS += -L'> (${ Id.VSub_Name basepath) <'/lib -Wl,-rpath,'> 
                          (${ Id.VSub_Name basepath) <'/lib'>
                        )
                      }
                    )
                  ]
                )
            )
            (C {<echo>} {(DQ <'include Makefile'>)})
          ]
        )
    )
    (command.ShFunction
      name: checkout
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<hg>} {<clone>} 
                  {<git> <Id.Lit_Other '+'> <https> <Id.Lit_Colon ':'> <'//github.com/stephenrkell/'> 
                    ($ Id.VSub_Number '$1') <.git>
                  } {($ Id.VSub_Number '$1')}
                )
                (C {<git>} {<clone>} 
                  {<https> <Id.Lit_Colon ':'> <'//github.com/stephenrkell/'> ($ Id.VSub_Number '$1') 
                    <.git>
                  } {($ Id.VSub_Number '$1')}
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
        Id.Op_DAmp
      ]
      children: [
        (command.Subshell
          child: 
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-d>} {<libcxxfileno>} {<Id.Lit_RBracket ']'>})
                (C {<checkout>} {<libcxxfileno>})
              ]
            )
        )
        (C {(${ Id.VSub_Name MAKE)} {<-C>} {<libcxxfileno>})
        (command.Subshell
          child: 
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-d>} {<libsrk31cxx>} {<Id.Lit_RBracket ']'>})
                (C {<checkout>} {<libsrk31cxx>})
              ]
            )
        )
        (command.Simple
          words: [
            {<gen_makefile>}
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libcxxfileno>})
                )
              )
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<'libsrk31cxx/src/makefile'>}
            )
          ]
          do_fork: T
        )
        (C {(${ Id.VSub_Name MAKE)} {<-C>} {<libsrk31cxx>})
        (command.Subshell
          child: 
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-d>} {<libdwarfpp>} {<Id.Lit_RBracket ']'>})
                (C {<checkout>} {<libdwarfpp>})
              ]
            )
        )
        (command.Simple
          words: [
            {<gen_makefile>}
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libcxxfileno>})
                )
              )
            }
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libsrk31cxx>})
                )
              )
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<'libdwarfpp/src/makefile'>}
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [
            {<gen_makefile>}
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libcxxfileno>})
                )
              )
            }
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libsrk31cxx>})
                )
              )
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<'libdwarfpp/examples/makefile'>}
            )
          ]
          do_fork: T
        )
        (C {(${ Id.VSub_Name MAKE)} {<-C>} {<libdwarfpp>})
        (command.Subshell
          child: 
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-d>} {<libcxxgen>} {<Id.Lit_RBracket ']'>})
                (C {<checkout>} {<libcxxgen>})
              ]
            )
        )
        (command.Simple
          words: [
            {<gen_makefile>}
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libcxxfileno>})
                )
              )
            }
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libsrk31cxx>})
                )
              )
            }
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libdwarfpp>})
                )
              )
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {<'libcxxgen/src/makefile'>}
            )
          ]
          do_fork: T
        )
        (C {(${ Id.VSub_Name MAKE)} {<-C>} {<libcxxgen>})
        (command.Subshell
          child: 
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-d>} {<libantlr3cxx>} {<Id.Lit_RBracket ']'>})
                (C {<checkout>} {<libantlr3cxx>})
              ]
            )
        )
        (command.Subshell
          child: 
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-d>} {<m4ntlr>} {<Id.Lit_RBracket ']'>})
                (C {<checkout>} {<m4ntlr>})
              ]
            )
        )
        (command.Simple
          words: [
            {<gen_makefile>}
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libcxxfileno>})
                )
              )
            }
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libsrk31cxx>})
                )
              )
            }
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libdwarfpp>})
                )
              )
            }
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libcxxgen>})
                )
              )
            }
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<libantlr3cxx>})
                )
              )
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<dirname>} {($ Id.VSub_Number '$0')})
                  ) <'/../src/makefile'>
                }
            )
          ]
          do_fork: T
        )
        (command.Simple
          words: [
            {<echo>}
            {
              (DQ <'CLASSPATH=.:'> (${ Id.VSub_Name ANTLR34_PREFIX) 
                <'/share/java/antlr-3.4-complete.jar:'> (${ Id.VSub_Name STRINGTEMPLATE_PREFIX) <'/share/java/stringtemplate.jar:\n'> <'ANTLR_M4_PATH := '> 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<readlink>} {<-f>} {<m4ntlr>})
                ) <'\n'> <'\n'> <'CFLAGS += -I'> (${ Id.VSub_Name ANTLR34_PREFIX) <'\n'> <'LDFLAGS += -L'> 
                (${ Id.VSub_Name ANTLR34_PREFIX) <'/lib -Wl,-rpath,'> (${ Id.VSub_Name ANTLR34_PREFIX) <'/lib\n'> <'\n'> <'include Makefile'>
              )
            }
          ]
          redirects: [
            (redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: 
                {
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<dirname>} {($ Id.VSub_Number '$0')})
                  ) <'/../parser/makefile'>
                }
            )
          ]
          do_fork: T
        )
        (C {<cp>} 
          {
            (command_sub
              left_token: <Id.Left_DollarParen '$('>
              child: (C {<dirname>} {($ Id.VSub_Number '$0')})
            ) <'/../src/makefile'>
          } 
          {
            (command_sub
              left_token: <Id.Left_DollarParen '$('>
              child: (C {<dirname>} {($ Id.VSub_Number '$0')})
            ) <'/../printer/makefile'>
          }
        )
      ]
    )
  ]
)