(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:wordlib) op: Equal rhs: {(DQ (/usr/lib/games/long-words.txt))} spids: [16] ) ] spids: [16] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:empty) op: Equal rhs: {(DQ (Lit_Other '\\') (.))} spids: [21] ) ] spids: [21] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:games) op:Equal rhs:{(0)} spids:[30])] spids: [30] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-r)} {(DQ ($ VSub_Name '$wordlib'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} {(DQ ($ VSub_Number '$0') (': Missing word library ') ($ VSub_Name '$wordlib'))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[65])] ) (SimpleCommand words: [ {(echo)} {(DQ ('(online: http://www.intuitive.com/wicked/examples/long-words.txt'))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[75])] ) (SimpleCommand words: [ {(echo)} {(DQ ('save the file as ') ($ VSub_Name '$wordlib') (" and you're ready to play!)"))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[87])] ) (C {(exit)} {(1)}) ] spids: [16777215 54] ) ] spids: [16777215 95] ) (While cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$guess'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (quit))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:match) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(randomquote)} {($ VSub_Name '$wordlib')})] ) left_token: <Left_CommandSub '$('> spids: [126 130] ) ) } spids: [124] ) ] spids: [124] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$games')} {(-gt)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ )}) (C {(echo)} {(DQ ('*** New Game! ***'))})] spids: [16777215 152] ) ] spids: [16777215 168] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:games) op: Equal rhs: { (DQ (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$games')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [174 183] ) ) } spids: [172] ) ] spids: [172] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:guessed) op:Equal rhs:{(DQ )} spids:[187])] spids: [187] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:guess) op:Equal rhs:{(DQ )} spids:[193])] spids: [193] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:bad) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(6)}) spids: [200 204] ) } spids: [199] ) ] spids: [199] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:partial) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$match')}) (C {(sed)} { (DQ ('s/[^') ($ VSub_Name '$empty') (${ VSub_Name guessed) (']/-/g') ) } ) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [209 226] ) ) } spids: [207] ) ] spids: [207] ) (While cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$guess'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$match'))} {(-a)} {(DQ ($ VSub_Name '$guess'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (quit))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (C {(echo)} {(DQ )}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$guessed'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(/bin/echo)} {(-n)} {(DQ ('Guessed: ') ($ VSub_Name '$guessed') (', '))}) ] spids: [16777215 294] ) ] spids: [16777215 311] ) (C {(echo)} { (DQ ('Steps from gallows: ') ($ VSub_Name '$bad') (', word so far: ') ($ VSub_Name '$partial') ) } ) (C {(/bin/echo)} {(-n)} {(DQ ('Guess a letter: '))}) (C {(read)} {(guess)}) (C {(echo)} {(DQ )}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$guess'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$match'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ ('You got it!'))})] spids: [16777215 365] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$guess'))} {(Lit_Other '=')} {(DQ (quit))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(sleep)} {(0)})] spids: [378 396] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$guess')}) (C {(wc)} {(-c)}) (C {(sed)} {(SQ <'s/[^[:digit:]]//g'>)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [418 436] ) } {(-ne)} {(2)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Uh oh: You can only guess a single letter at a time'))}) ] spids: [414 446] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$guess')}) (C {(sed)} {(SQ <'s/[[:lower:]]//g'>)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [466 478] ) ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Uh oh: Please only use lowercase letters for your guesses'))} ) ] spids: [457 485] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$guess')}) (C {(sed)} { (DQ ('s/[') ($ VSub_Name '$empty') ($ VSub_Name '$guessed') (']//g') ) } ) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [502 517] ) ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ('Uh oh: You have already tried ') ($ VSub_Name '$guess'))}) ] spids: [495 524] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$match')}) (C {(sed)} {(DQ (s/) ($ VSub_Name '$guess') (/-/g))}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [544 558] ) ) } {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$match'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:guessed) op: Equal rhs: {(DQ ($ VSub_Name '$guessed') ($ VSub_Name '$guess'))} spids: [575] ) ] spids: [575] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:partial) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$match')}) (C {(sed)} { (DQ ('s/[^') ($ VSub_Name '$empty') (${ VSub_Name guessed) (']/-/g') ) } ) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [584 601] ) ) } spids: [582] ) ] spids: [582] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$partial'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$match'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ("** You've been pardoned!! Well done! The word was ") (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ($ VSub_Name '$match') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (.) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:guess) op: Equal rhs: {(DQ ($ VSub_Name '$match'))} spids: [637] ) ] spids: [637] ) ] spids: [16777215 623] ) ] else_action: [ (C {(echo)} { (DQ ('* Great! The letter ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ($ VSub_Name '$guess') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' appears in the word!') ) } ) ] spids: [644 658] ) ] spids: [539 572] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$bad')} {(-eq)} {(1)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ( "** Uh oh: you've run out of steps. You're on the platform... <SNAP!>" ) ) } ) (C {(echo)} { (DQ ('** The word you were trying to guess was ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ($ VSub_Name '$match') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:guess) op: Equal rhs: {(DQ ($ VSub_Name '$match'))} spids: [695] ) ] spids: [695] ) ] spids: [661 675] ) ] else_action: [ (C {(echo)} { (DQ ('* Nope, ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$guess') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' does not appear in the word.') ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:guessed) op: Equal rhs: {(DQ ($ VSub_Name '$guessed') ($ VSub_Name '$guess'))} spids: [715] ) ] spids: [715] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:bad) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$bad')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [723 732] ) } spids: [722] ) ] spids: [722] ) ] spids: [701 735] ) ] spids: [268 738] ) ) ] spids: [121 740] ) ) (C {(exit)} {(0)}) ] )