(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:scale) op:Equal rhs:{(2)} spids:[8])]
      spids: [8]
    )
    (FuncDef
      name: show_help
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 37
                  stdin_parts: [
                    ('  In addition to standard math functions, calc also supports:\n')
                    ('\n')
                    ('  a % b       remainder of a/b\n')
                    ('  a ^ b       exponential: a raised to the b power\n')
                    ('  s(x)        sine of x, x in radians\n')
                    ('  c(x)        cosine of x, x in radians\n')
                    ('  a(x)        arctangent of x, in radians\n')
                    ('  l(x)        natural log of x\n')
                    ('  e(x)        exponential log of raising e to the x \n')
                    ('  j(n,x)      Bessel function of integer order n of x\n')
                    ('  scale N     show N fractional digits (default = 2)\n')
                  ]
                )
              ]
            )
          ]
          spids: [17]
        )
      spids: [13 16]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(exec)} {(scriptbc)} {(DQ ($ VSub_At '$@'))})]
          spids: [16777215 55]
        )
      ]
      spids: [16777215 66]
    )
    (C {(echo)} {(DQ ("Calc--a simple calculator. Enter 'help' for help, 'quit' to quit."))})
    (C {(/bin/echo)} {(-n)} {(DQ ('calc> '))})
    (WhileUntil
      keyword: <KW_While while>
      cond: [(C {(read)} {(command)} {(args)})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name '$command')}
              arms: [
                (case_arm
                  pat_list: [{(quit)} {(ControlFlow_Exit exit)}]
                  action: [(ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})]
                  spids: [104 107 113 16777215]
                )
                (case_arm
                  pat_list: [{(help)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\?'>)}]
                  action: [(C {(show_help)})]
                  spids: [116 119 123 16777215]
                )
                (case_arm
                  pat_list: [{(scale)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:scale)
                          op: Equal
                          rhs: {($ VSub_Name '$args')}
                          spids: [129]
                        )
                      ]
                      spids: [129]
                    )
                  ]
                  spids: [126 127 132 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (C {(scriptbc)} {(-p)} {($ VSub_Name '$scale')} {(DQ ($ VSub_Name '$command'))} 
                      {(DQ ($ VSub_Name '$args'))}
                    )
                  ]
                  spids: [135 136 152 16777215]
                )
              ]
              spids: [96 101 155]
            )
            (C {(/bin/echo)} {(-n)} {(DQ ('calc> '))})
          ]
          spids: [93 167]
        )
    )
    (C {(echo)} {(DQ )})
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)