(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'scale='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'scale='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'scale='> name:scale) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) (command.ShFunction name_tok: <show_help> name: show_help body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> 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'> ] ) ) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <exec> more_env: [] words: [{<exec>} {<scriptbc>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] spids: [41 55] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Calc--a simple calculator. Enter \'help\' for help, \'quit\' to quit.'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <'/bin/echo'> more_env: [] words: [{<'/bin/echo'>} {<-n>} {(DQ <'calc> '>)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<command>} {<args>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName command)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <quit> pattern: (pat.Words words:[{<quit>} {<Id.ControlFlow_Exit exit>}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})] right: <Id.Op_DSemi _> ) (CaseArm left: <help> pattern: (pat.Words words: [ {<help>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\?'> ch:'?')} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <show_help> more_env: [] words: [{<show_help>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <scale> pattern: (pat.Words words:[{<scale>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'scale='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'scale='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'scale='> name:scale) op: assign_op.Equal rhs: {($ Id.VSub_DollarName args)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <scriptbc> more_env: [] words: [ {<scriptbc>} {<-p>} {($ Id.VSub_DollarName scale)} {(DQ ($ Id.VSub_DollarName command))} {(DQ ($ Id.VSub_DollarName args))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <'/bin/echo'> more_env: [] words: [{<'/bin/echo'>} {<-n>} {(DQ <'calc> '>)}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {(DQ )}] redirects:[] do_fork:T) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )