(CommandList children: [ (C {(set)} {(-u)}) (FuncDef name: init body: (BraceGroup children: [ (Sentence child:(C {(_Dbg_debugger)}) terminator:<Op_Semi ";">) (C {(Lit_Other ":")}) ] spids: [15] ) spids: [11 14] ) (FuncDef name: hanoi body: (BraceGroup children: [ (C {(typeset)} {(-i)} {(Lit_VarLike "n=") ($ VSub_Number "$1")}) (C {(typeset)} {(-r)} {(Lit_VarLike "a=") ($ VSub_Number "$2")}) (C {(typeset)} {(-r)} {(Lit_VarLike "b=") ($ VSub_Number "$3")}) (C {(typeset)} {(-r)} {(Lit_VarLike "c=") ($ VSub_Number "$4")}) (C {(_Dbg_set_trace)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithVarRef name:n) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (DParen child: (UnaryAssign op_id:Node_PostDMinus child:(LhsName name:n)) ) (C {(hanoi)} {($ VSub_Name "$n")} {($ VSub_Name "$a")} {($ VSub_Name "$c")} {($ VSub_Name "$b")} ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:disc_num) right: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:max) right: (ArithVarRef name:n) ) ) ) (C {(echo)} { (DQ ("Move disk ") ($ VSub_Name "$n") (" on ") ($ VSub_Name "$a") (" to ") ($ VSub_Name "$b") ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithVarRef name:n) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(hanoi)} {($ VSub_Name "$n")} {($ VSub_Name "$c")} {($ VSub_Name "$b")} {($ VSub_Name "$a")} ) ] spids: [-1 145] ) ] spids: [-1 159] ) ] spids: [-1 85] ) ] spids: [-1 162] ) ] spids: [30] ) spids: [26 29] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:top_builddir) op: Equal rhs: {($ VSub_Number "$1")} spids: [185] ) ] spids: [185] ) ] spids: [-1 182] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_z child: { (BracedVarSub token: <VSub_Name top_builddir> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ )}) spids: [194 199] ) } ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:top_builddir) op: Equal rhs: {($ VSub_Name "$PWD") (/../..)} spids: [208] ) ] spids: [208] ) ] spids: [188 205] ) ] spids: [-1 212] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithWord w:{($ VSub_Pound "$#")}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cmdfile) op: Equal rhs: {($ VSub_Number "$2")} spids: [232] ) ] spids: [232] ) ] spids: [-1 229] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:srcdir) op: Equal rhs: { (BracedVarSub token: <VSub_Name top_srcdir> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(SQ <.>)}) spids: [239 245] ) } spids: [238] ) ] spids: [238] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cmdfile) op: Equal rhs: {(${ VSub_Name top_srcdir) (/test/data/settrace.cmd)} spids: [248] ) ] spids: [248] ) ] spids: [235 254] ) (C {(source)} {(${ VSub_Name top_builddir) (/bashdb-trace)} {(-q)} {(--no-init)} {(-L)} {($ VSub_Name "$top_srcdir")} {(-B)} {(-x)} {($ VSub_Name "$cmdfile")} ) (C {(typeset)} {(-i)} {(Lit_VarLike "max=") (1)}) (C {(init)}) (C {(hanoi)} {($ VSub_Name "$max")} {(SQ <a>)} {(SQ <b>)} {(SQ <c>)}) (C {(_Dbg_debugger)} {(1)} {(_Dbg_do_quit)}) ] )