GIVE (keyword for 'if' [label]) (say [symbol]) GIVE (keyword for 'else' [label]) (otherwise-say [symbol]) GIVE (99 [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) RULE TAKE (n [var]) (bottles [symbol]) (of [symbol]) (beer [symbol]) GIVE (n [var]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (on [symbol]) (the [symbol]) (wall! [symbol]) GIVE (n [var]) (bottles [symbol]) (of [symbol]) (beer! [symbol]) GIVE (You [symbol]) (take [symbol]) (one [symbol]) (down, [symbol]) (pass [symbol]) (it [symbol]) (around! [symbol]) GIVE (when [symbol]) (n [var]) (is [symbol]) (1, [symbol]) (say [symbol]) GIVE (No [symbol]) (more [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (on [symbol]) (the [symbol]) (wall! [symbol]) GIVE (otherwise-say [symbol]) GIVE (n [var]) (- [symbol]) (1 [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (on [symbol]) (the [symbol]) (wall! [symbol]) GIVE (n [var]) (- [symbol]) (1 [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) GIVE (end [symbol]) END RULE TAKE (1 [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (on [symbol]) (the [symbol]) (wall! [symbol]) GIVE (print [symbol]) (formatted [symbol]) (message [label]) ("1 bottle of beer on the wall!\n" [string]) END RULE TAKE (n [var]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (on [symbol]) (the [symbol]) (wall! [symbol]) GIVE (print [symbol]) (formatted [symbol]) ( [symbol]) GIVE (message [label]) ("{%d} bottles of beer on the wall!\n" [string]) GIVE (arguments [label]) (n, [var]) (_ [symbol]) END RULE TAKE (1 [symbol]) (bottles [symbol]) (of [symbol]) (beer! [symbol]) GIVE (print [symbol]) (formatted [symbol]) (message [label]) ("1 bottle of beer!\n" [string]) END RULE TAKE (n [var]) (bottles [symbol]) (of [symbol]) (beer! [symbol]) ( [symbol]) GIVE (print [symbol]) (formatted [symbol]) GIVE (message [label]) ("{%d} bottles of beer!\n" [string]) GIVE (arguments [label]) (n, [var]) (_ [symbol]) END RULE TAKE (You [symbol]) (take [symbol]) (one [symbol]) (down, [symbol]) (pass [symbol]) (it [symbol]) (around! [symbol]) ( [symbol]) GIVE (print [symbol]) (formatted [symbol]) GIVE (message [label]) ("You take one down, pass it around!\n" [string]) END RULE TAKE (when [symbol]) (n [var]) (is [symbol]) (n [var]) END RULE TAKE (when [symbol]) (n [var]) (is [symbol]) (m [var]) GIVE (false [symbol]) END RULE TAKE (_ [var]) (- [symbol]) (1 [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (on [symbol]) (the [symbol]) (wall! [symbol]) (@math [label]) (1 [symbol]) GIVE (print [symbol]) (formatted [symbol]) GIVE (message [label]) ("1 bottle of beer on the wall!\n\n" [string]) END RULE TAKE (_ [var]) (- [symbol]) (1 [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (on [symbol]) (the [symbol]) (wall! [symbol]) (@math [label]) (n [var]) GIVE (print [symbol]) (formatted [symbol]) GIVE (message [label]) ("{%d} bottle of beer on the wall!\n\n" [string]) GIVE (arguments [label]) (n, [var]) (_ [symbol]) END RULE TAKE (n [var]) (- [symbol]) (1 [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (on [symbol]) (the [symbol]) (wall!? [symbol]) GIVE (@math [label]) (subtract [symbol]) (n [var]) (1 [symbol]) END RULE TAKE (_ [var]) (- [symbol]) (1 [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (@math [label]) (n [var]) GIVE (n [var]) (bottles [symbol]) (of [symbol]) (beer [symbol]) END RULE TAKE (n [var]) (- [symbol]) (1 [symbol]) (bottles [symbol]) (of [symbol]) (beer? [symbol]) GIVE (@math [label]) (subtract [symbol]) (n [var]) (1 [symbol]) END RULE TAKE (No [symbol]) (more [symbol]) (bottles [symbol]) (of [symbol]) (beer [symbol]) (on [symbol]) (the [symbol]) (wall! [symbol]) GIVE (print [symbol]) (formatted [symbol]) GIVE (message [label]) ("No more bottles of beer on the wall!\n" [string]) END