(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:BISON)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (SimpleCommand
                            words: [{(bison)} {(--version)}]
                            redirects: [
                              (Redir
                                op_id: Redir_Great
                                fd: 2
                                arg_word: {(/dev/null)}
                                spids: [20]
                              )
                            ]
                          )
                          (C {(head)} {(-n)} {(1)})
                          (C {(sed)} {(-e)} {(SQ <'s/^[^0-9.]*//'>)} {(-e)} {(SQ <'s/[^0-9.]*$//'>)})
                        ]
                        negated: F
                      )
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [15 46]
              )
            }
          spids: [14]
        )
      ]
      spids: [14]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {($ VSub_Pound '$#')} {(Lit_Other '=')} {(1)})]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PROG_DIR)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(pwd)})])
                        left_token: <Left_Backtick '`'>
                        spids: [63 65]
                      )
                    }
                  spids: [62]
                )
              ]
              spids: [62]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:TEST_DIR)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [68]
                )
              ]
              spids: [68]
            )
          ]
          spids: [16777215 59]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:PROG_DIR) op:Equal rhs:{(..)} spids:[74])]
          spids: [74]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:TEST_DIR) op:Equal rhs:{(.)} spids:[78])]
          spids: [78]
        )
      ]
      spids: [71 81]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:THIS_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(pwd)})])
                left_token: <Left_Backtick '`'>
                spids: [84 86]
              )
            }
          spids: [83]
        )
      ]
      spids: [83]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ifBTYACC)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Sentence
                        child: 
                          (SimpleCommand
                            words: [{(fgrep)} {(-l)} {(SQ <'define YYBTYACC'>)} {(config.h)}]
                            redirects: [
                              (Redir
                                op_id: Redir_Great
                                fd: 16777215
                                arg_word: {(/dev/null)}
                                spids: [101]
                              )
                            ]
                          )
                        terminator: <Op_Semi ';'>
                      )
                      (Sentence
                        child: (C {(test)} {($ VSub_QMark '$?')} {(KW_Bang '!') (Lit_Other '=')} {(0)})
                        terminator: <Op_Semi ';'>
                      )
                      (C {(echo)} {($ VSub_QMark '$?')})
                    ]
                  )
                left_token: <Left_Backtick '`'>
                spids: [90 119]
              )
            }
          spids: [89]
        )
      ]
      spids: [89]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {($ VSub_Name '$ifBTYACC')} {(Lit_Other '=')} {(0)})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:REF_DIR)
                  op: Equal
                  rhs: {(${ VSub_Name TEST_DIR) (/yacc)}
                  spids: [136]
                )
              ]
              spids: [136]
            )
          ]
          spids: [16777215 133]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:REF_DIR)
              op: Equal
              rhs: {(${ VSub_Name TEST_DIR) (/btyacc)}
              spids: [145]
            )
          ]
          spids: [145]
        )
      ]
      spids: [142 151]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:MY_MAKE)
          op: Equal
          rhs: 
            {
              (DQ ('make -f ') ($ VSub_Name '$PROG_DIR') ('/makefile srcdir=') ($ VSub_Name '$PROG_DIR'))
            }
          spids: [154]
        )
      ]
      spids: [154]
    )
    (FuncDef
      name: run_make
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:C_FILE)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {(DQ ($ VSub_Number '$1'))})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [171 177]
                      )
                    }
                  spids: [170]
                )
              ]
              spids: [170]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:O_FILE)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {(DQ ($ VSub_Name '$C_FILE'))} {(.c)})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [181 189]
                      ) (.o)
                    }
                  spids: [180]
                )
              ]
              spids: [180]
            )
            (C {(shift)})
            (C {(cd)} {($ VSub_Name '$REF_DIR')})
            (C {(make)} {(-f)} {($ VSub_Name '$PROG_DIR') (/makefile)} 
              {(Lit_VarLike 'srcdir=') ($ VSub_Name '$PROG_DIR')} {($ VSub_Name '$O_FILE')} {($ VSub_Star '$*')}
            )
            (AndOr
              ops: [Op_DAmp]
              children: [
                (C {(test)} {(-f)} {($ VSub_Name '$O_FILE')})
                (C {(rm)} {($ VSub_Name '$O_FILE')})
              ]
            )
            (C {(cd)} {($ VSub_Name '$THIS_DIR')})
          ]
          spids: [167]
        )
      spids: [163 166]
    )
    (C {(echo)} 
      {(SQ <'** '>) 
        (CommandSubPart
          command_list: (CommandList children:[(C {(date)})])
          left_token: <Left_Backtick '`'>
          spids: [241 243]
        )
      }
    )
    (C {(echo)} {(DQ ('** program is in ') ($ VSub_Name '$PROG_DIR'))})
    (C {(echo)} {(DQ ('** test-files in ') ($ VSub_Name '$REF_DIR'))})
    (ForEach
      iter_name: input
      iter_words: [{(${ VSub_Name REF_DIR) (/) (Lit_Other '*') (.c)}]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name '$input')}
              arms: [
                (case_arm
                  pat_list: [
                    {(${ VSub_Name REF_DIR) (/err_) (Lit_Other '*')}
                    {(${ VSub_Name REF_DIR) (/test-err_) (Lit_Other '*')}
                  ]
                  action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                  spids: [286 299 305 16777215]
                )
              ]
              spids: [276 280 308]
            )
            (AndOr
              ops: [Op_DPipe]
              children: [
                (C {(test)} {(-f)} {(DQ ($ VSub_Name '$input'))})
                (ControlFlow token:<ControlFlow_Continue continue>)
              ]
            )
            (C {(run_make)} {(DQ ($ VSub_Name '$input'))})
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:DEFS) op:Equal rhs:{(EmptyPart)} spids:[334])]
              spids: [334]
            )
            (Case
              to_match: {($ VSub_Name '$input')}
              arms: [
                (case_arm
                  pat_list: [{(${ VSub_Name REF_DIR) (/pure_) (Lit_Other '*')}]
                  spids: [347 352 359 16777215]
                )
              ]
              spids: [337 341 362]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(DQ (x) ($ VSub_Name '$DEFS'))} {(KW_Bang '!') (Lit_Other '=')} 
                      {(DQ (x))}
                    )
                  ]
                  action: [
                    (C {(run_make)} {(DQ ($ VSub_Name '$input'))} 
                      {(Lit_VarLike 'DEFINES=') (DQ ($ VSub_Name '$DEFS'))}
                    )
                  ]
                  spids: [16777215 383]
                )
              ]
              spids: [16777215 398]
            )
          ]
          spids: [273 400]
        )
      spids: [265 16777215]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$BISON'))})]
          action: [
            (C {(echo)} {(DQ ('** compare with bison ') ($ VSub_Name '$BISON'))})
            (ForEach
              iter_name: input
              iter_words: [{(${ VSub_Name TEST_DIR) (/) (Lit_Other '*') (.y)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} {(DQ ($ VSub_Name '$input'))})
                        (ControlFlow token:<ControlFlow_Continue continue>)
                      ]
                    )
                    (Case
                      to_match: {($ VSub_Name '$input')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(${ VSub_Name TEST_DIR) (/err_) (Lit_Other '*')}
                            {(${ VSub_Name TEST_DIR) (/test-err_) (Lit_Other '*')}
                          ]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [461 474 480 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(${ VSub_Name TEST_DIR) (/ok_syntax) (Lit_Other '*')}
                            {(${ VSub_Name TEST_DIR) (/varsyntax) (Lit_Other '*')}
                          ]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [483 496 506 16777215]
                        )
                        (case_arm
                          pat_list: [{(${ VSub_Name TEST_DIR) (/btyacc_) (Lit_Other '*')}]
                          action: [(ControlFlow token:<ControlFlow_Continue continue>)]
                          spids: [509 514 524 16777215]
                        )
                      ]
                      spids: [454 458 527]
                    )
                    (C {(echo)} {(DQ ('... testing ') ($ VSub_Name '$input'))})
                    (C {(rm)} {(-f)} {(run_make.) (Lit_Other '[') (coy) (Lit_Other ']')})
                    (Case
                      to_match: {($ VSub_Name '$input')}
                      arms: [
                        (case_arm
                          pat_list: [{(${ VSub_Name TEST_DIR) (/pure_) (Lit_Other '*')}]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (C {(test)} {(-z)} 
                                      {
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(fgrep)} {(-l)} {(SQ <'%pure-parser'>)} 
                                                  {($ VSub_Name '$input')}
                                                )
                                              ]
                                            )
                                          left_token: <Left_Backtick '`'>
                                          spids: [584 594]
                                        )
                                      }
                                    )
                                  ]
                                  action: [
                                    (SimpleCommand
                                      words: [{(echo)} {(DQ ('%pure-parser'))}]
                                      redirects: [
                                        (Redir
                                          op_id: Redir_DGreat
                                          fd: 16777215
                                          arg_word: {(run_make.y)}
                                          spids: [606]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [16777215 597]
                                )
                              ]
                              spids: [16777215 610]
                            )
                          ]
                          spids: [570 575 613 16777215]
                        )
                      ]
                      spids: [563 567 616]
                    )
                    (SimpleCommand
                      words: [{(sed)} {(-e)} {(SQ <'/^%expect/s,%expect.*,,'>)} {($ VSub_Name '$input')}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {(run_make.y)}
                          spids: [630]
                        )
                      ]
                    )
                    (C {(bison)} {(-Wno-other)} {(-Wno-conflicts-sr)} {(-Wconflicts-rr)} {(-y)} 
                      {(run_make.y)}
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-f)} {(DQ (y.tab.c))})]
                          action: [
                            (SimpleCommand
                              words: [
                                {(sed)}
                                {(-e)}
                                {(SQ <'/^#line/s,"run_make.y","'>) ($ VSub_Name '$input') (SQ <'",'>)}
                                {(y.tab.c)}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 16777215
                                  arg_word: {(run_make.c)}
                                  spids: [676]
                                )
                              ]
                            )
                            (C {(rm)} {(-f)} {(y.tab.c)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:input)
                                  op: Equal
                                  rhs: {(run_make.c)}
                                  spids: [689]
                                )
                              ]
                              spids: [689]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:object)
                                  op: Equal
                                  rhs: {(run_make.o)}
                                  spids: [693]
                                )
                              ]
                              spids: [693]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [(C {(test)} {(-f)} {($ VSub_Name '$input')})]
                                  action: [
                                    (C {($ VSub_Name '$MY_MAKE')} {($ VSub_Name '$object')} 
                                      {(Lit_VarLike 'DEFINES=') 
                                        (SQ 
                                          <
'-DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=1 -DYYSTACK_USE_ALLOCA=0 -DYYMAXDEPTH=0'
                                          >
                                        )
                                      }
                                    )
                                  ]
                                  spids: [16777215 706]
                                )
                              ]
                              else_action: [
                                (C {(echo)} {(DQ ('?? ') ($ VSub_Name '$input') (' not found'))})
                              ]
                              spids: [719 731]
                            )
                          ]
                          spids: [16777215 659]
                        )
                      ]
                      spids: [16777215 734]
                    )
                    (C {(rm)} {(-f)} {(run_make.) (Lit_Other '[') (coy) (Lit_Other ']')})
                  ]
                  spids: [438 747]
                )
              spids: [429 16777215]
            )
          ]
          spids: [16777215 413]
        )
      ]
      spids: [16777215 749]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:YACC) op:Equal rhs:{(EmptyPart)} spids:[752])]
      spids: [752]
    )
    (ForEach
      iter_name: name
      iter_words: [{(/usr/ccs/bin/yacc)}]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-f)} {($ VSub_Name '$name')})]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:YACC)
                          op: Equal
                          rhs: {($ VSub_Name '$name')}
                          spids: [777]
                        )
                      ]
                      spids: [777]
                    )
                  ]
                  spids: [16777215 774]
                )
              ]
              spids: [16777215 781]
            )
          ]
          spids: [762 783]
        )
      spids: [759 16777215]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$YACC'))})]
          action: [
            (C {(echo)} {(DQ ('** compare with ') ($ VSub_Name '$YACC'))})
            (ForEach
              iter_name: input
              iter_words: [{(${ VSub_Name TEST_DIR) (/) (Lit_Other '*') (.y)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (AndOr
                      ops: [Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} {(DQ ($ VSub_Name '$input'))})
                        (ControlFlow token:<ControlFlow_Continue continue>)
                      ]
                    )
                    (C {(echo)} {(DQ ('... testing ') ($ VSub_Name '$input'))})
                    (C {(rm)} {(-f)} {(run_make.) (Lit_Other '[') (coy) (Lit_Other ']')})
                    (Case
                      to_match: {($ VSub_Name '$input')}
                      arms: [
                        (case_arm
                          pat_list: [{(pure_) (Lit_Other '*')}]
                          action: [
                            (C {(echo)} {(DQ ('... skipping ') ($ VSub_Name '$input'))})
                            (Sentence
                              child: (ControlFlow token:<ControlFlow_Continue continue>)
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          spids: [864 866 881 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (AndOr
                                      ops: [Op_DPipe Op_DPipe Op_DPipe]
                                      children: [
                                        (SimpleCommand
                                          words: [
                                            {(fgrep)}
                                            {(SQ <'%pure-parser'>)}
                                            {($ VSub_Name '$input')}
                                          ]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_Great
                                              fd: 16777215
                                              arg_word: {(/dev/null)}
                                              spids: [898]
                                            )
                                          ]
                                        )
                                        (SimpleCommand
                                          words: [
                                            {(fgrep)}
                                            {(SQ <'%parse-param'>)}
                                            {($ VSub_Name '$input')}
                                          ]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_Great
                                              fd: 16777215
                                              arg_word: {(/dev/null)}
                                              spids: [912]
                                            )
                                          ]
                                        )
                                        (SimpleCommand
                                          words: [
                                            {(fgrep)}
                                            {(SQ <'%lex-param'>)}
                                            {($ VSub_Name '$input')}
                                          ]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_Great
                                              fd: 16777215
                                              arg_word: {(/dev/null)}
                                              spids: [926]
                                            )
                                          ]
                                        )
                                        (SimpleCommand
                                          words: [
                                            {(fgrep)}
                                            {(SQ <YYLEX_PARAM>)}
                                            {($ VSub_Name '$input')}
                                          ]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_Great
                                              fd: 16777215
                                              arg_word: {(/dev/null)}
                                              spids: [940]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(DQ ('... skipping ') ($ VSub_Name '$input'))})
                                    (Sentence
                                      child: (ControlFlow token:<ControlFlow_Continue continue>)
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  spids: [16777215 944]
                                )
                              ]
                              spids: [16777215 959]
                            )
                          ]
                          spids: [884 885 962 16777215]
                        )
                      ]
                      spids: [857 861 965]
                    )
                    (SimpleCommand
                      words: [{(sed)} {(-e)} {(SQ <'/^%expect/s,%expect.*,,'>)} {($ VSub_Name '$input')}]
                      redirects: [
                        (Redir
                          op_id: Redir_DGreat
                          fd: 16777215
                          arg_word: {(run_make.y)}
                          spids: [979]
                        )
                      ]
                    )
                    (C {($ VSub_Name '$YACC')} {(run_make.y)})
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-f)} {(y.tab.c)})]
                          action: [
                            (SimpleCommand
                              words: [
                                {(sed)}
                                {(-e)}
                                {(SQ <'/^#line/s,"run_make.y","'>) ($ VSub_Name '$input') (SQ <'",'>)}
                                {(y.tab.c)}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: 16777215
                                  arg_word: {(run_make.c)}
                                  spids: [1015]
                                )
                              ]
                            )
                            (C {(rm)} {(-f)} {(y.tab.c)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:input)
                                  op: Equal
                                  rhs: {(run_make.c)}
                                  spids: [1028]
                                )
                              ]
                              spids: [1028]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:object)
                                  op: Equal
                                  rhs: {(run_make.o)}
                                  spids: [1032]
                                )
                              ]
                              spids: [1032]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [(C {(test)} {(-f)} {($ VSub_Name '$input')})]
                                  action: [(C {($ VSub_Name '$MY_MAKE')} {($ VSub_Name '$object')})]
                                  spids: [16777215 1045]
                                )
                              ]
                              else_action: [
                                (C {(echo)} {(DQ ('?? ') ($ VSub_Name '$input') (' not found'))})
                              ]
                              spids: [1053 1065]
                            )
                          ]
                          spids: [16777215 998]
                        )
                      ]
                      spids: [16777215 1068]
                    )
                    (C {(rm)} {(-f)} {(run_make.) (Lit_Other '[') (coy) (Lit_Other ']')})
                  ]
                  spids: [821 1081]
                )
              spids: [812 16777215]
            )
          ]
          spids: [16777215 796]
        )
      ]
      spids: [16777215 1083]
    )
  ]
)