(CommandList
  children: [
    (C {(_Dbg_help_add)} {(handle)} 
      {
        (DQ ("**handle** *signal* *action*\n") ("\n") ("Specify how to handle *signal*.\n") ("\n") 
          ("*signal* is a signal name like SIGSEGV, but numeric signals like 11\n") ("(which is usually equivalent on ") (EscapedLiteralPart token:<Lit_EscapedChar "\\*">) 
          ("nix systems) is okay too.\n") ("\n") ("*action* is one of ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (stop) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (", ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (nostop) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (", ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (print) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (", and\n") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (noprint) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (". ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (Stop) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" indicates entering debugger if this signal\n") ("happens. ") 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (Print) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
          (" indicates printing a message if this signal is\n") ("encountered. ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (Stack) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" is like ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (print) 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" but except the entire call\n") ("stack is printed. Prefacing these actions with ") 
          (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (no) (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" indicates not to\n") 
          ("do the indicated action.")
        )
      }
    )
    (FuncDef
      name: _Dbg_do_handle
      body: 
        (BraceGroup
          children: [
            (C {(typeset)} {(Lit_VarLike "sig=") ($ VSub_Number "$1")})
            (C {(typeset)} {(Lit_VarLike "cmd=") ($ VSub_Number "$2")})
            (C {(typeset)} {(-i)} {(signum)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (DBracket expr:(BoolUnary op_id:BoolUnary_z child:{($ VSub_Name "$sig")}))
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(_Dbg_errmsg)} {(DQ ("Missing signal name or signal number."))})
                    (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})
                  ]
                  spids: [-1 163]
                )
              ]
              spids: [-1 178]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobDEqual
                              left: {($ VSub_Name "$sig")}
                              right: {($ VSub_Name "$int_pat")}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:signame)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(_Dbg_signum2name)} {($ VSub_Name "$sig")})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [199 203]
                              )
                            }
                          spids: [198]
                        )
                      ]
                      spids: [198]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DParen
                                  child: 
                                    (ArithBinary
                                      op_id: Arith_NEqual
                                      left: (ArithWord w:{($ VSub_QMark "$?")})
                                      right: (ArithWord w:{(Lit_Digits 0)})
                                    )
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(_Dbg_errmsg)} {(DQ ("Bad signal number: ") ($ VSub_Name "$sig"))})
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(2)}
                            )
                          ]
                          spids: [-1 221]
                        )
                      ]
                      spids: [-1 237]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:signum)
                          op: Equal
                          rhs: {(sig)}
                          spids: [240]
                        )
                      ]
                      spids: [240]
                    )
                  ]
                  spids: [-1 195]
                )
              ]
              else_action: [
                (Sentence child:(C {(typeset)} {(signum)}) terminator:<Op_Semi ";">)
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:signum)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(_Dbg_name2signum)} {($ VSub_Name "$sig")})]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [254 258]
                          )
                        }
                      spids: [253]
                    )
                  ]
                  spids: [253]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (Sentence
                          child: 
                            (DParen
                              child: 
                                (ArithBinary
                                  op_id: Arith_NEqual
                                  left: (ArithWord w:{($ VSub_QMark "$?")})
                                  right: (ArithWord w:{(Lit_Digits 0)})
                                )
                            )
                          terminator: <Op_Semi ";">
                        )
                      ]
                      action: [
                        (C {(_Dbg_errmsg)} {(DQ ("Bad signal name: ") ($ VSub_Name "$sig"))})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(3)}
                        )
                      ]
                      spids: [-1 276]
                    )
                  ]
                  spids: [-1 292]
                )
              ]
              spids: [244 295]
            )
            (Case
              to_match: {($ VSub_Name "$cmd")}
              arms: [
                (case_arm
                  pat_list: [{(nop)} {(nopr)} {(nopri)} {(noprin)} {(noprint)}]
                  action: [
                    (C 
                      {(_Dbg_sig_print) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") 
                        (SQ <noprint>)
                      }
                    )
                    (C 
                      {(_Dbg_sig_stop) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") 
                        (SQ <stop>)
                      }
                    )
                  ]
                  spids: [306 324 351 -1]
                )
                (case_arm
                  pat_list: [{(nosta)} {(nostac)} {(nostack)}]
                  action: [
                    (C 
                      {(_Dbg_sig_show_stack) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") 
                        (SQ <nostack>)
                      }
                    )
                  ]
                  spids: [355 365 378 -1]
                )
                (case_arm
                  pat_list: [{(nosto)} {(nostop)}]
                  action: [
                    (C 
                      {(_Dbg_sig_stop) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") 
                        (SQ <nostop>)
                      }
                    )
                  ]
                  spids: [382 388 401 -1]
                )
                (case_arm
                  pat_list: [{(p)} {(pr)} {(pri)} {(prin)} {(print)}]
                  action: [
                    (C 
                      {(_Dbg_sig_print) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") 
                        (SQ <print>)
                      }
                    )
                  ]
                  spids: [405 423 436 -1]
                )
                (case_arm
                  pat_list: [{(sta)} {(stac)} {(stack)}]
                  action: [
                    (C 
                      {(_Dbg_sig_show_stack) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") 
                        (SQ <showstack>)
                      }
                    )
                  ]
                  spids: [440 450 463 -1]
                )
                (case_arm
                  pat_list: [{(sto)} {(stop)}]
                  action: [
                    (C 
                      {(_Dbg_sig_stop) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") 
                        (SQ <stop>)
                      }
                    )
                    (C 
                      {(_Dbg_sig_print) (Lit_Other "[") (signum) (Lit_Other "]") (Lit_Other "=") 
                        (SQ <print>)
                      }
                    )
                  ]
                  spids: [467 473 500 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (DParen
                                  child: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:cmd))
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(_Dbg_errmsg)} 
                              {
                                (DQ 
                                  (
"Need to give a command: stop, nostop, stack, nostack, print, noprint"
                                  )
                                )
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {(4)}
                            )
                          ]
                          spids: [-1 520]
                        )
                      ]
                      else_action: [
                        (C {(_Dbg_errmsg)} {(DQ ("Invalid handler command ") ($ VSub_Name "$cmd"))})
                        (ControlFlow
                          token: <ControlFlow_Return return>
                          arg_word: {(5)}
                        )
                      ]
                      spids: [537 553]
                    )
                  ]
                  spids: [503 505 556 -1]
                )
              ]
              spids: [299 303 559]
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
          ]
          spids: [129]
        )
      spids: [125 128]
    )
  ]
)