(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:BISON)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:15)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (command.Simple
                            words: [{(bison)} {(--version)}]
                            redirects: [
                              (redir.Redir
                                op: (Token id:Id.Redir_Great val:'2>' span_id:22)
                                fd: 2
                                arg_word: {(/dev/null)}
                              )
                            ]
                          )
                          (C {(head)} {(-n)} {(1)})
                          (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/^[^0-9.]*//' span_id:40))} 
                            {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/[^0-9.]*$//' span_id:46))}
                          )
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [14]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test)} {($ Id.VSub_Pound '$#')} {(Id.Lit_Equals '=')} {(1)})]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PROG_DIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:65)
                        command_list: (command.CommandList children:[(C {(pwd)})])
                      )
                    }
                  spids: [64]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TEST_DIR)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [72]
                )
              ]
            )
          ]
          spids: [51 61]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:PROG_DIR)
              op: assign_op.Equal
              rhs: {(..)}
              spids: [78]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:TEST_DIR)
              op: assign_op.Equal
              rhs: {(.)}
              spids: [82]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:THIS_DIR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:88)
                command_list: (command.CommandList children:[(C {(pwd)})])
              )
            }
          spids: [87]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ifBTYACC)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:96)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Sentence
                        child: 
                          (command.Simple
                            words: [
                              {(fgrep)}
                              {(-l)}
                              {(SQ (Token id:Id.Lit_Chars val:'define YYBTYACC' span_id:104))}
                              {(config.h)}
                            ]
                            redirects: [
                              (redir.Redir
                                op: (Token id:Id.Redir_Great val:'>' span_id:109)
                                fd: -1
                                arg_word: {(/dev/null)}
                              )
                            ]
                          )
                        terminator: (Token id:Id.Op_Semi val:';' span_id:112)
                      )
                      (command.Sentence
                        child: 
                          (C {(test)} {($ Id.VSub_QMark '$?')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} 
                            {(0)}
                          )
                        terminator: (Token id:Id.Op_Semi val:';' span_id:122)
                      )
                      (C {(echo)} {($ Id.VSub_QMark '$?')})
                    ]
                  )
              )
            }
          spids: [95]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(test)} {($ Id.VSub_DollarName '$ifBTYACC')} {(Id.Lit_Equals '=')} {(0)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:139)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:REF_DIR)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name TEST_DIR) (/yacc)}
                  spids: [144]
                )
              ]
            )
          ]
          spids: [130 141]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:REF_DIR)
              op: assign_op.Equal
              rhs: {(${ Id.VSub_Name TEST_DIR) (/btyacc)}
              spids: [153]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MY_MAKE)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ('make -f ') ($ Id.VSub_DollarName '$PROG_DIR') ('/makefile srcdir=') 
                ($ Id.VSub_DollarName '$PROG_DIR')
              )
            }
          spids: [162]
        )
      ]
    )
    (command.ShFunction
      name: run_make
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:C_FILE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:179)
                        command_list: 
                          (command.CommandList
                            children: [(C {(basename)} {(DQ ($ Id.VSub_Number '$1'))})]
                          )
                      )
                    }
                  spids: [178]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:O_FILE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:191)
                        command_list: 
                          (command.CommandList
                            children: [(C {(basename)} {(DQ ($ Id.VSub_DollarName '$C_FILE'))} {(.c)})]
                          )
                      ) (.o)
                    }
                  spids: [190]
                )
              ]
            )
            (C {(shift)})
            (C {(cd)} {($ Id.VSub_DollarName '$REF_DIR')})
            (C {(make)} {(-f)} {($ Id.VSub_DollarName '$PROG_DIR') (/makefile)} 
              {(Id.Lit_VarLike 'srcdir=') ($ Id.VSub_DollarName '$PROG_DIR')} {($ Id.VSub_DollarName '$O_FILE')} {($ Id.VSub_Star '$*')}
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(-f)} {($ Id.VSub_DollarName '$O_FILE')})
                (C {(rm)} {($ Id.VSub_DollarName '$O_FILE')})
              ]
            )
            (C {(cd)} {($ Id.VSub_DollarName '$THIS_DIR')})
          ]
        )
    )
    (C {(echo)} 
      {(SQ (Token id:Id.Lit_Chars val:'** ' span_id:251)) 
        (command_sub
          left_token: (Token id:Id.Left_Backtick val:'`' span_id:253)
          command_list: (command.CommandList children:[(C {(date)})])
        )
      }
    )
    (C {(echo)} {(DQ ('** program is in ') ($ Id.VSub_DollarName '$PROG_DIR'))})
    (C {(echo)} {(DQ ('** test-files in ') ($ Id.VSub_DollarName '$REF_DIR'))})
    (command.ForEach
      iter_name: input
      iter_words: [{(${ Id.VSub_Name REF_DIR) (/) (Id.Lit_Star '*') (.c)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {($ Id.VSub_DollarName '$input')}
              arms: [
                (case_arm
                  pat_list: [
                    {(${ Id.VSub_Name REF_DIR) (/err_) (Id.Lit_Star '*')}
                    {(${ Id.VSub_Name REF_DIR) (/test-err_) (Id.Lit_Star '*')}
                  ]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:316)
                    )
                  ]
                  spids: [300 313 319 -1]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$input'))})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Continue val:continue span_id:336)
                )
              ]
            )
            (C {(run_make)} {(DQ ($ Id.VSub_DollarName '$input'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:DEFS)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [348]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$input')}
              arms: [
                (case_arm
                  pat_list: [{(${ Id.VSub_Name REF_DIR) (/pure_) (Id.Lit_Star '*')}]
                  spids: [361 366 373 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(DQ (x) ($ Id.VSub_DollarName '$DEFS'))} 
                      {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (x))}
                    )
                  ]
                  action: [
                    (C {(run_make)} {(DQ ($ Id.VSub_DollarName '$input'))} 
                      {(Id.Lit_VarLike 'DEFINES=') (DQ ($ Id.VSub_DollarName '$DEFS'))}
                    )
                  ]
                  spids: [380 397]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$BISON'))})]
          action: [
            (C {(echo)} {(DQ ('** compare with bison ') ($ Id.VSub_DollarName '$BISON'))})
            (command.ForEach
              iter_name: input
              iter_words: [{(${ Id.VSub_Name TEST_DIR) (/) (Id.Lit_Star '*') (.y)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$input'))})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:465)
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$input')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(${ Id.VSub_Name TEST_DIR) (/err_) (Id.Lit_Star '*')}
                            {(${ Id.VSub_Name TEST_DIR) (/test-err_) (Id.Lit_Star '*')}
                          ]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Continue val:continue span_id:491)
                            )
                          ]
                          spids: [475 488 494 -1]
                        )
                        (case_arm
                          pat_list: [
                            {(${ Id.VSub_Name TEST_DIR) (/ok_syntax) (Id.Lit_Star '*')}
                            {(${ Id.VSub_Name TEST_DIR) (/varsyntax) (Id.Lit_Star '*')}
                          ]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Continue val:continue span_id:517)
                            )
                          ]
                          spids: [497 510 520 -1]
                        )
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name TEST_DIR) (/btyacc_) (Id.Lit_Star '*')}]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Continue val:continue span_id:535)
                            )
                          ]
                          spids: [523 528 538 -1]
                        )
                      ]
                    )
                    (C {(echo)} {(DQ ('... testing ') ($ Id.VSub_DollarName '$input'))})
                    (C {(rm)} {(-f)} {(run_make.) (Id.Lit_LBracket '[') (coy) (Id.Lit_RBracket ']')})
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$input')}
                      arms: [
                        (case_arm
                          pat_list: [{(${ Id.VSub_Name TEST_DIR) (/pure_) (Id.Lit_Star '*')}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (C {(test)} {(-z)} 
                                      {
                                        (command_sub
                                          left_token: (Token id:Id.Left_Backtick val:'`' span_id:598)
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(fgrep)} {(-l)} 
                                                  {
                                                    (SQ 
                                                      (Token
                                                        id: Id.Lit_Chars
                                                        val: '%pure-parser'
                                                        span_id: 606
                                                      )
                                                    )
                                                  } {($ Id.VSub_DollarName '$input')}
                                                )
                                              ]
                                            )
                                        )
                                      }
                                    )
                                  ]
                                  action: [
                                    (command.Simple
                                      words: [{(echo)} {(DQ ('%pure-parser'))}]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:622)
                                          fd: -1
                                          arg_word: {(run_make.y)}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [592 613]
                                )
                              ]
                            )
                          ]
                          spids: [584 589 629 -1]
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(sed)}
                        {(-e)}
                        {(SQ (Token id:Id.Lit_Chars val:'/^%expect/s,%expect.*,,' span_id:641))}
                        {($ Id.VSub_DollarName '$input')}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:646)
                          fd: -1
                          arg_word: {(run_make.y)}
                        )
                      ]
                    )
                    (C {(bison)} {(-Wno-other)} {(-Wno-conflicts-sr)} {(-Wconflicts-rr)} {(-y)} 
                      {(run_make.y)}
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-f)} {(DQ (y.tab.c))})]
                          action: [
                            (command.Simple
                              words: [
                                {(sed)}
                                {(-e)}
                                {
                                  (SQ 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '/^#line/s,"run_make.y","'
                                      span_id: 683
                                    )
                                  ) ($ Id.VSub_DollarName '$input') (SQ (Token id:Id.Lit_Chars val:'",' span_id:687))
                                }
                                {(y.tab.c)}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:692)
                                  fd: -1
                                  arg_word: {(run_make.c)}
                                )
                              ]
                            )
                            (C {(rm)} {(-f)} {(y.tab.c)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:input)
                                  op: assign_op.Equal
                                  rhs: {(run_make.c)}
                                  spids: [705]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:object)
                                  op: assign_op.Equal
                                  rhs: {(run_make.o)}
                                  spids: [709]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [(C {(test)} {(-f)} {($ Id.VSub_DollarName '$input')})]
                                  action: [
                                    (C {($ Id.VSub_DollarName '$MY_MAKE')} 
                                      {($ Id.VSub_DollarName '$object')} 
                                      {(Id.Lit_VarLike 'DEFINES=') 
                                        (SQ 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'-DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=1 -DYYSTACK_USE_ALLOCA=0 -DYYMAXDEPTH=0'
                                            span_id: 731
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [713 722]
                                )
                              ]
                              else_action: [
                                (C {(echo)} 
                                  {(DQ ('?? ') ($ Id.VSub_DollarName '$input') (' not found'))}
                                )
                              ]
                            )
                          ]
                          spids: [664 675]
                        )
                      ]
                    )
                    (C {(rm)} {(-f)} {(run_make.) (Id.Lit_LBracket '[') (coy) (Id.Lit_RBracket ']')})
                  ]
                )
            )
          ]
          spids: [417 427]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:YACC)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [768]
        )
      ]
    )
    (command.ForEach
      iter_name: name
      iter_words: [{(/usr/ccs/bin/yacc)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-f)} {($ Id.VSub_DollarName '$name')})]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:YACC)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$name')}
                          spids: [793]
                        )
                      ]
                    )
                  ]
                  spids: [781 790]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$YACC'))})]
          action: [
            (C {(echo)} {(DQ ('** compare with ') ($ Id.VSub_DollarName '$YACC'))})
            (command.ForEach
              iter_name: input
              iter_words: [{(${ Id.VSub_Name TEST_DIR) (/) (Id.Lit_Star '*') (.y)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$input'))})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:850)
                        )
                      ]
                    )
                    (C {(echo)} {(DQ ('... testing ') ($ Id.VSub_DollarName '$input'))})
                    (C {(rm)} {(-f)} {(run_make.) (Id.Lit_LBracket '[') (coy) (Id.Lit_RBracket ']')})
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$input')}
                      arms: [
                        (case_arm
                          pat_list: [{(pure_) (Id.Lit_Star '*')}]
                          action: [
                            (C {(echo)} {(DQ ('... skipping ') ($ Id.VSub_DollarName '$input'))})
                            (command.Sentence
                              child: 
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Continue val:continue span_id:893)
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:894)
                            )
                          ]
                          spids: [880 882 897 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe Id.Op_DPipe Id.Op_DPipe]
                                      children: [
                                        (command.Simple
                                          words: [
                                            {(fgrep)}
                                            {
                                              (SQ 
                                                (Token
                                                  id: Id.Lit_Chars
                                                  val: '%pure-parser'
                                                  span_id: 909
                                                )
                                              )
                                            }
                                            {($ Id.VSub_DollarName '$input')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:914)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                        (command.Simple
                                          words: [
                                            {(fgrep)}
                                            {
                                              (SQ 
                                                (Token
                                                  id: Id.Lit_Chars
                                                  val: '%parse-param'
                                                  span_id: 923
                                                )
                                              )
                                            }
                                            {($ Id.VSub_DollarName '$input')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:928)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                        (command.Simple
                                          words: [
                                            {(fgrep)}
                                            {
                                              (SQ 
                                                (Token
                                                  id: Id.Lit_Chars
                                                  val: '%lex-param'
                                                  span_id: 937
                                                )
                                              )
                                            }
                                            {($ Id.VSub_DollarName '$input')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:942)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                        (command.Simple
                                          words: [
                                            {(fgrep)}
                                            {(SQ (Token id:Id.Lit_Chars val:YYLEX_PARAM span_id:951))}
                                            {($ Id.VSub_DollarName '$input')}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:956)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(DQ ('... skipping ') ($ Id.VSub_DollarName '$input'))})
                                    (command.Sentence
                                      child: 
                                        (command.ControlFlow
                                          token: 
                                            (Token
                                              id: Id.ControlFlow_Continue
                                              val: continue
                                              span_id: 971
                                            )
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:972)
                                    )
                                  ]
                                  spids: [904 960]
                                )
                              ]
                            )
                          ]
                          spids: [900 901 978 -1]
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(sed)}
                        {(-e)}
                        {(SQ (Token id:Id.Lit_Chars val:'/^%expect/s,%expect.*,,' span_id:990))}
                        {($ Id.VSub_DollarName '$input')}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:995)
                          fd: -1
                          arg_word: {(run_make.y)}
                        )
                      ]
                    )
                    (C {($ Id.VSub_DollarName '$YACC')} {(run_make.y)})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-f)} {(y.tab.c)})]
                          action: [
                            (command.Simple
                              words: [
                                {(sed)}
                                {(-e)}
                                {
                                  (SQ 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '/^#line/s,"run_make.y","'
                                      span_id: 1022
                                    )
                                  ) ($ Id.VSub_DollarName '$input') (SQ (Token id:Id.Lit_Chars val:'",' span_id:1026))
                                }
                                {(y.tab.c)}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:1031)
                                  fd: -1
                                  arg_word: {(run_make.c)}
                                )
                              ]
                            )
                            (C {(rm)} {(-f)} {(y.tab.c)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:input)
                                  op: assign_op.Equal
                                  rhs: {(run_make.c)}
                                  spids: [1044]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:object)
                                  op: assign_op.Equal
                                  rhs: {(run_make.o)}
                                  spids: [1048]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [(C {(test)} {(-f)} {($ Id.VSub_DollarName '$input')})]
                                  action: [
                                    (C {($ Id.VSub_DollarName '$MY_MAKE')} 
                                      {($ Id.VSub_DollarName '$object')}
                                    )
                                  ]
                                  spids: [1052 1061]
                                )
                              ]
                              else_action: [
                                (C {(echo)} 
                                  {(DQ ('?? ') ($ Id.VSub_DollarName '$input') (' not found'))}
                                )
                              ]
                            )
                          ]
                          spids: [1005 1014]
                        )
                      ]
                    )
                    (C {(rm)} {(-f)} {(run_make.) (Id.Lit_LBracket '[') (coy) (Id.Lit_RBracket ']')})
                  ]
                )
            )
          ]
          spids: [802 812]
        )
      ]
    )
  ]
)