(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:biggest) op:Equal rhs:{(100)} spids:[7])]
      spids: [7]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:guess) op:Equal rhs:{(0)} spids:[13])]
      spids: [13]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:guesses) op:Equal rhs:{(0)} spids:[19])]
      spids: [19]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:number)
          op: Equal
          rhs: 
            {
              (ArithSubPart
                anode: 
                  (ArithBinary
                    op_id: Arith_Plus
                    left: 
                      (ArithBinary
                        op_id: Arith_Percent
                        left: (ArithWord w:{($ VSub_Name '$RANDOM')})
                        right: (ArithWord w:{($ VSub_Name '$biggest')})
                      )
                    right: (ArithWord w:{(Lit_Digits 1)})
                  )
                spids: [26 39]
              )
            }
          spids: [25]
        )
      ]
      spids: [25]
    )
    (C {(echo)} {(DQ ('Guess a number between 1 and ') ($ VSub_Name '$biggest'))})
    (WhileUntil
      keyword: <KW_While while>
      cond: [
        (Sentence
          child: 
            (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$guess'))} {(-ne)} {($ VSub_Name '$number')} 
              {(Lit_Other ']')}
            )
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (Sentence
              child: (C {(/bin/echo)} {(-n)} {(DQ ('Guess? '))})
              terminator: <Op_Semi ';'>
            )
            (C {(read)} {(guess)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$guess'))} {(-lt)} 
                          {($ VSub_Name '$number')} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(DQ ('... bigger!'))})]
                  spids: [16777215 102]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$guess'))} {(-gt)} 
                          {($ VSub_Name '$number')} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(echo)} {(DQ ('... smaller!'))})]
                  spids: [112 128]
                )
              ]
              spids: [16777215 138]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:guesses)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: (ArithWord w:{($ VSub_Name '$guesses')})
                            right: (ArithWord w:{(Lit_Digits 1)})
                          )
                        spids: [142 151]
                      )
                    }
                  spids: [141]
                )
              ]
              spids: [141]
            )
          ]
          spids: [68 153]
        )
    )
    (C {(echo)} 
      {
        (DQ ('Right!! Guessed ') ($ VSub_Name '$number') (' in ') ($ VSub_Name '$guesses') (' guesses.'))
      }
    )
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)