(command.CommandList
  children: [
    (C {<typeset>} 
      {<Id.Lit_VarLike '_Dbg_evalfile='> 
        (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<_Dbg_tempname>} {<eval>}))
      }
    )
    (C {<_Dbg_help_add>} {<eval>} 
      {
        (SQ <'**eval** *cmd*\n'> <'\n'> <'**eval**\n'> <'\n'> <'**eval?**\n'> <'\n'> 
          <'In the first form *cmd* is a string *cmd* is a string sent to special\n'> <'shell builtin eval.\n'> <'\n'> <'In the second form, use evaluate the current source line text.\n'> 
          <'\n'> <'Often when one is stopped at the line of the first part of an "if",\n'> 
          <'"elif", "case", "return", "while" compound statement or an assignment\n'> <'statement, one wants to eval is just the expression portion.  For\n'> 
          <'this, use eval?. Actually, any alias that ends in ? which is aliased\n'> <'to eval will do thie same thing.\n'> <'\n'> <'See also:\n'> <'---------\n'> <'\n'> 
          <'**print** and **set autoeval**.'>
        )
      } {<1>} {<_Dbg_complete_eval>}
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<typeset>} {<-i>} {<_Dbg_show_eval_rc>})
          terminator: <Id.Op_Semi _>
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:_Dbg_show_eval_rc)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [115]
            )
          ]
        )
      ]
    )
    (command.ShFunction
      name: _Dbg_complete_eval
      body: 
        (BraceGroup
          children: [
            (command.Sentence
              child: (C {<typeset>} {<-a>} {<words>})
              terminator: <Id.Op_Semi _>
            )
            (C {<typeset>} {<subcmds>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(SQ <' '>)}
                  spids: [142]
                )
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:words)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [{($ Id.VSub_DollarName '$COMP_LINE')}]
                      )
                    }
                  spids: [147]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: 
                                    {
                                      (braced_var_sub
                                        token: <Id.VSub_Name words>
                                        prefix_op: (Id.VSub_Pound)
                                        bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                      )
                                    }
                                  right: {<Id.Lit_Digits 1>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: 
                                            {
                                              (braced_var_sub
                                                token: <Id.VSub_Name words>
                                                bracket_op: 
                                                  (bracket_op.ArrayIndex
                                                    expr: {<Id.Lit_Digits 0>}
                                                  )
                                              )
                                            }
                                          right: {(SQ <'eval?'>)}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<typeset>} {<extracted>})
                            (C {<_Dbg_eval_extract_condition>} 
                              {(DQ ($ Id.VSub_DollarName '$_Dbg_source_line'))}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:COMPREPLY)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (sh_array_literal
                                        left: <Id.Op_LParen _>
                                        words: [{(DQ ($ Id.VSub_DollarName '$extracted'))}]
                                      )
                                    }
                                  spids: [218]
                                )
                              ]
                            )
                          ]
                          spids: [182 203]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:COMPREPLY)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (sh_array_literal
                                    left: <Id.Op_LParen _>
                                    words: [{(DQ ($ Id.VSub_DollarName '$_Dbg_source_line'))}]
                                  )
                                }
                              spids: [229]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [159 179]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:COMPREPLY)
                      op: assign_op.Equal
                      rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
                      spids: [243]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (C {<complete>} {<-F>} {<_Dbg_complete_eval>} {(SQ <'eval?'>)})
    (command.ShFunction
      name: _Dbg_do_eval
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {<builtin>}
                {<echo>}
                {(DQ <'. '> (${ Id.VSub_Name _Dbg_libdir) <'/dbg-set-d-vars.inc'>)}
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$_Dbg_evalfile')}
                )
              ]
              do_fork: T
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DParen
                              child: 
                                (arith_expr.Binary
                                  op_id: Id.Arith_DEqual
                                  left: {($ Id.VSub_Pound '$#')}
                                  right: {<Id.Lit_Digits 0>}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (C {<typeset>} 
                      {<Id.Lit_VarLike 'source_line_save='> 
                        (DQ ($ Id.VSub_DollarName '$_Dbg_source_line'))
                      }
                    )
                    (C {<typeset>} 
                      {<Id.Lit_VarLike 'highlight_save='> 
                        ($ Id.VSub_DollarName '$_Dbg_set_highlight')
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_set_highlight)
                          op: assign_op.Equal
                          rhs: {(SQ )}
                          spids: [329]
                        )
                      ]
                    )
                    (C {<_Dbg_get_source_line>})
                    (C {<typeset>} {<suffix>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:suffix)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name _Dbg_orig_cmd>
                                suffix_op: 
                                  (suffix_op.Slice
                                    begin: 
                                      (arith_expr.Binary
                                        op_id: Id.Arith_Minus
                                        left: 
                                          {
                                            (braced_var_sub
                                              token: <Id.VSub_Name _Dbg_orig_cmd>
                                              prefix_op: (Id.VSub_Pound)
                                            )
                                          }
                                        right: {<Id.Lit_Digits 1>}
                                      )
                                    length: {<Id.Lit_Digits 1>}
                                  )
                              )
                            }
                          spids: [347]
                        )
                      ]
                    )
                    (C {<typeset>} {<source_line>})
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.DBracket
                                      expr: 
                                        (bool_expr.Binary
                                          op_id: Id.BoolBinary_GlobDEqual
                                          left: {(SQ <'?'>)}
                                          right: {(DQ ($ Id.VSub_DollarName '$suffix'))}
                                        )
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          action: [
                            (C {<typeset>} {<extracted>})
                            (C {<_Dbg_eval_extract_condition>} 
                              {(DQ ($ Id.VSub_DollarName '$_Dbg_source_line'))}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:source_line)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$extracted'))}
                                  spids: [400]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:source_line_save)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$extracted'))}
                                  spids: [406]
                                )
                              ]
                            )
                          ]
                          spids: [367 385]
                        )
                      ]
                      else_action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:source_line)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_DollarName '$_Dbg_bash_command'))}
                              spids: [415]
                            )
                          ]
                        )
                      ]
                    )
                    (command.Simple
                      words: [{<builtin>} {<echo>} {(DQ ($ Id.VSub_DollarName '$source_line'))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName '$_Dbg_evalfile')}
                        )
                      ]
                      do_fork: T
                    )
                    (C {<_Dbg_msg>} {(DQ <'eval: '> (${ Id.VSub_Name source_line))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_source_line)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName '$source_line_save'))}
                          spids: [448]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:_Dbg_set_highlight)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$_Dbg_highlight_save')}
                          spids: [454]
                        )
                      ]
                    )
                  ]
                  spids: [289 304]
                )
              ]
              else_action: [
                (command.Simple
                  words: [{<builtin>} {<echo>} {(DQ ($ Id.VSub_At '$@'))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName '$_Dbg_evalfile')}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Unary
                                  op_id: Id.BoolUnary_n
                                  child: {($ Id.VSub_DollarName '$_Dbg_tty')}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<.>} {($ Id.VSub_DollarName '$_Dbg_evalfile')}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName '$_Dbg_tty')}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [477 489]
                )
              ]
              else_action: [(C {<.>} {($ Id.VSub_DollarName '$_Dbg_evalfile')})]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_rc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [511]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.DParen child:<Id.Lit_ArithVarLike _Dbg_show_eval_rc>)
                (C {<_Dbg_msg>} 
                  {
                    (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'? is '> 
                      ($ Id.VSub_DollarName '$_Dbg_rc')
                    )
                  }
                )
              ]
            )
            (C {<_Dbg_set_debugger_internal>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_last_cmd)
                  op: assign_op.Equal
                  rhs: {(SQ <eval>)}
                  spids: [544]
                )
              ]
            )
            (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
        )
    )
    (C {<_Dbg_alias_add>} {(SQ <ev>)} {(SQ <eval>)})
    (C {<_Dbg_alias_add>} {(SQ <'ev?'>)} {(SQ <eval>)})
    (C {<_Dbg_alias_add>} {(SQ <'eval?'>)} {(SQ <eval>)})
    (C {<typeset>} {<Id.Lit_VarLike '_Dbg_last_print_args='> (SQ )})
    (C {<_Dbg_help_add>} {<print>} 
      {
        (SQ <'print EXPRESSION -- Print EXPRESSION.\n'> <'\n'> 
          <'EXPRESSION is a string like you would put in a print statement.\n'> <'See also eval.\n'> <'\n'> 
          <'The difference between eval and print. Suppose cmd has the value "ls".\n'> <'\n'> <'print $cmd # prints "ls"\n'> <'eval $cmd  # runs an ls command\n'>
        )
      }
    )
    (command.ShFunction
      name: _Dbg_do_print
      body: 
        (BraceGroup
          children: [
            (C {<typeset>} 
              {<Id.Lit_VarLike '_Dbg_expr='> 
                (braced_var_sub
                  token: <Id.VSub_At '@'>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonHyphen ':-'>
                      arg_word: {(DQ ($ Id.VSub_DollarName '$_Dbg_last_print_args'))}
                    )
                )
              }
            )
            (command.Sentence child:(C {<typeset>} {<dq_expr>}) terminator:<Id.Op_Semi _>)
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dq_expr)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<_Dbg_esc_dq>} {(DQ ($ Id.VSub_DollarName '$_Dbg_expr'))})
                      )
                    }
                  spids: [640]
                )
              ]
            )
            (C {<.>} {(${ Id.VSub_Name _Dbg_libdir) <'/dbg-set-d-vars.inc'>})
            (C {<eval>} {(DQ <'_Dbg_msg '> ($ Id.VSub_DollarName '$_Dbg_expr'))})
            (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'rc='> ($ Id.VSub_QMark '$?')})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_Dbg_last_print_args)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$dq_expr'))}
                  spids: [674]
                )
              ]
            )
            (command.ControlFlow
              token: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName '$rc')}
            )
          ]
        )
    )
    (C {<_Dbg_alias_add>} {(SQ <pr>)} {(SQ <print>)})
  ]
)