User:Ben Russell/thue/hq9p.t

Here's an HQ9+ interpreter, written in Thue. Note a few things: Have fun!
 * Inputted program MUST ONLY consist of 'H', 'Q', '9', and '+', and they MUST be in capitals. If you look in the code, you'll see why.
 * 99 bottles of beer is not generated dynamically. It's just uncompressed from its packed state.

P.S. If you have the Thue interpreter from Cat's Eye Technologies, use the Python version instead of the C version. The C version has a tendency to cock up the strings. Only use the C version when the Python version cocks up.

This code is public domain, though if you could attribute my name to it, that'll be great.

[STDIN]::=::: `A::=~ bottle `E::=~s `B::=~ of beer `C::=~ on the wall `F::=~No more `,::=~, `.::=~. `D::=~Take one down, pass it around, `\::=~ `0::=~0 `1::=~1 `2::=~2 `3::=~3 `4::=~4 `5::=~5 `6::=~6 `7::=~7 `8::=~8 `9::=~9 _$::=` !0::=$0$ !1::=$1$ !2::=$2$ !3::=$3$ !4::=$4$ !5::=$5$ !6::=$6$ !7::=$7$ !8::=$8$ !9::=$9$ `H::=~Hello World! `pH::=~H `pQ::=~Q `p9::=~9 `p+::=~+ [BOTTLES]::=!99$A$E$B$C$,$\!99$A$E$B$,$\$D$\!98$A$E$B$C$.$\$\!98$A$E$B$C$,$\!98$A$E$B$,$\$D$\!97$A$E$B$C$.$\$\!97$A$E$B$C$,$\!97$A$E$B$,$\$D$\!96$A$E$B$C$.$\$\!96$A$E$B$C$,$\!96$A$E$B$,$\$D$\!95$A$E$B$C$.$\$\!95$A$E$B$C$,$\!95$A$E$B$,$\$D$\!94$A$E$B$C$.$\$\!94$A$E$B$C$,$\!94$A$E$B$,$\$D$\!93$A$E$B$C$.$\$\!93$A$E$B$C$,$\!93$A$E$B$,$\$D$\!92$A$E$B$C$.$\$\!92$A$E$B$C$,$\!92$A$E$B$,$\$D$\!91$A$E$B$C$.$\$\!91$A$E$B$C$,$\!91$A$E$B$,$\$D$\!90$A$E$B$C$.$\$\!90$A$E$B$C$,$\!90$A$E$B$,$\$D$\!89$A$E$B$C$.$\$\!89$A$E$B$C$,$\!89$A$E$B$,$\$D$\!88$A$E$B$C$.$\$\!88$A$E$B$C$,$\!88$A$E$B$,$\$D$\!87$A$E$B$C$.$\$\!87$A$E$B$C$,$\!87$A$E$B$,$\$D$\!86$A$E$B$C$.$\$\!86$A$E$B$C$,$\!86$A$E$B$,$\$D$\!85$A$E$B$C$.$\$\!85$A$E$B$C$,$\!85$A$E$B$,$\$D$\!84$A$E$B$C$.$\$\!84$A$E$B$C$,$\!84$A$E$B$,$\$D$\!83$A$E$B$C$.$\$\!83$A$E$B$C$,$\!83$A$E$B$,$\$D$\!82$A$E$B$C$.$\$\!82$A$E$B$C$,$\!82$A$E$B$,$\$D$\!81$A$E$B$C$.$\$\!81$A$E$B$C$,$\!81$A$E$B$,$\$D$\!80$A$E$B$C$.$\$\!80$A$E$B$C$,$\!80$A$E$B$,$\$D$\!79$A$E$B$C$.$\$\!79$A$E$B$C$,$\!79$A$E$B$,$\$D$\!78$A$E$B$C$.$\$\!78$A$E$B$C$,$\!78$A$E$B$,$\$D$\!77$A$E$B$C$.$\$\!77$A$E$B$C$,$\!77$A$E$B$,$\$D$\!76$A$E$B$C$.$\$\!76$A$E$B$C$,$\!76$A$E$B$,$\$D$\!75$A$E$B$C$.$\$\!75$A$E$B$C$,$\!75$A$E$B$,$\$D$\!74$A$E$B$C$.$\$\!74$A$E$B$C$,$\!74$A$E$B$,$\$D$\!73$A$E$B$C$.$\$\!73$A$E$B$C$,$\!73$A$E$B$,$\$D$\!72$A$E$B$C$.$\$\!72$A$E$B$C$,$\!72$A$E$B$,$\$D$\!71$A$E$B$C$.$\$\!71$A$E$B$C$,$\!71$A$E$B$,$\$D$\!70$A$E$B$C$.$\$\!70$A$E$B$C$,$\!70$A$E$B$,$\$D$\!69$A$E$B$C$.$\$\!69$A$E$B$C$,$\!69$A$E$B$,$\$D$\!68$A$E$B$C$.$\$\!68$A$E$B$C$,$\!68$A$E$B$,$\$D$\!67$A$E$B$C$.$\$\!67$A$E$B$C$,$\!67$A$E$B$,$\$D$\!66$A$E$B$C$.$\$\!66$A$E$B$C$,$\!66$A$E$B$,$\$D$\!65$A$E$B$C$.$\$\!65$A$E$B$C$,$\!65$A$E$B$,$\$D$\!64$A$E$B$C$.$\$\!64$A$E$B$C$,$\!64$A$E$B$,$\$D$\!63$A$E$B$C$.$\$\!63$A$E$B$C$,$\!63$A$E$B$,$\$D$\!62$A$E$B$C$.$\$\!62$A$E$B$C$,$\!62$A$E$B$,$\$D$\!61$A$E$B$C$.$\$\!61$A$E$B$C$,$\!61$A$E$B$,$\$D$\!60$A$E$B$C$.$\$\!60$A$E$B$C$,$\!60$A$E$B$,$\$D$\!59$A$E$B$C$.$\$\!59$A$E$B$C$,$\!59$A$E$B$,$\$D$\!58$A$E$B$C$.$\$\!58$A$E$B$C$,$\!58$A$E$B$,$\$D$\!57$A$E$B$C$.$\$\!57$A$E$B$C$,$\!57$A$E$B$,$\$D$\!56$A$E$B$C$.$\$\!56$A$E$B$C$,$\!56$A$E$B$,$\$D$\!55$A$E$B$C$.$\$\!55$A$E$B$C$,$\!55$A$E$B$,$\$D$\!54$A$E$B$C$.$\$\!54$A$E$B$C$,$\!54$A$E$B$,$\$D$\!53$A$E$B$C$.$\$\!53$A$E$B$C$,$\!53$A$E$B$,$\$D$\!52$A$E$B$C$.$\$\!52$A$E$B$C$,$\!52$A$E$B$,$\$D$\!51$A$E$B$C$.$\$\!51$A$E$B$C$,$\!51$A$E$B$,$\$D$\!50$A$E$B$C$.$\$\!50$A$E$B$C$,$\!50$A$E$B$,$\$D$\!49$A$E$B$C$.$\$\!49$A$E$B$C$,$\!49$A$E$B$,$\$D$\!48$A$E$B$C$.$\$\!48$A$E$B$C$,$\!48$A$E$B$,$\$D$\!47$A$E$B$C$.$\$\!47$A$E$B$C$,$\!47$A$E$B$,$\$D$\!46$A$E$B$C$.$\$\!46$A$E$B$C$,$\!46$A$E$B$,$\$D$\!45$A$E$B$C$.$\$\!45$A$E$B$C$,$\!45$A$E$B$,$\$D$\!44$A$E$B$C$.$\$\!44$A$E$B$C$,$\!44$A$E$B$,$\$D$\!43$A$E$B$C$.$\$\!43$A$E$B$C$,$\!43$A$E$B$,$\$D$\!42$A$E$B$C$.$\$\!42$A$E$B$C$,$\!42$A$E$B$,$\$D$\!41$A$E$B$C$.$\$\!41$A$E$B$C$,$\!41$A$E$B$,$\$D$\!40$A$E$B$C$.$\$\!40$A$E$B$C$,$\!40$A$E$B$,$\$D$\!39$A$E$B$C$.$\$\!39$A$E$B$C$,$\!39$A$E$B$,$\$D$\!38$A$E$B$C$.$\$\!38$A$E$B$C$,$\!38$A$E$B$,$\$D$\!37$A$E$B$C$.$\$\!37$A$E$B$C$,$\!37$A$E$B$,$\$D$\!36$A$E$B$C$.$\$\!36$A$E$B$C$,$\!36$A$E$B$,$\$D$\!35$A$E$B$C$.$\$\!35$A$E$B$C$,$\!35$A$E$B$,$\$D$\!34$A$E$B$C$.$\$\!34$A$E$B$C$,$\!34$A$E$B$,$\$D$\!33$A$E$B$C$.$\$\!33$A$E$B$C$,$\!33$A$E$B$,$\$D$\!32$A$E$B$C$.$\$\!32$A$E$B$C$,$\!32$A$E$B$,$\$D$\!31$A$E$B$C$.$\$\!31$A$E$B$C$,$\!31$A$E$B$,$\$D$\!30$A$E$B$C$.$\$\!30$A$E$B$C$,$\!30$A$E$B$,$\$D$\!29$A$E$B$C$.$\$\!29$A$E$B$C$,$\!29$A$E$B$,$\$D$\!28$A$E$B$C$.$\$\!28$A$E$B$C$,$\!28$A$E$B$,$\$D$\!27$A$E$B$C$.$\$\!27$A$E$B$C$,$\!27$A$E$B$,$\$D$\!26$A$E$B$C$.$\$\!26$A$E$B$C$,$\!26$A$E$B$,$\$D$\!25$A$E$B$C$.$\$\!25$A$E$B$C$,$\!25$A$E$B$,$\$D$\!24$A$E$B$C$.$\$\!24$A$E$B$C$,$\!24$A$E$B$,$\$D$\!23$A$E$B$C$.$\$\!23$A$E$B$C$,$\!23$A$E$B$,$\$D$\!22$A$E$B$C$.$\$\!22$A$E$B$C$,$\!22$A$E$B$,$\$D$\!21$A$E$B$C$.$\$\!21$A$E$B$C$,$\!21$A$E$B$,$\$D$\!20$A$E$B$C$.$\$\!20$A$E$B$C$,$\!20$A$E$B$,$\$D$\!19$A$E$B$C$.$\$\!19$A$E$B$C$,$\!19$A$E$B$,$\$D$\!18$A$E$B$C$.$\$\!18$A$E$B$C$,$\!18$A$E$B$,$\$D$\!17$A$E$B$C$.$\$\!17$A$E$B$C$,$\!17$A$E$B$,$\$D$\!16$A$E$B$C$.$\$\!16$A$E$B$C$,$\!16$A$E$B$,$\$D$\!15$A$E$B$C$.$\$\!15$A$E$B$C$,$\!15$A$E$B$,$\$D$\!14$A$E$B$C$.$\$\!14$A$E$B$C$,$\!14$A$E$B$,$\$D$\!13$A$E$B$C$.$\$\!13$A$E$B$C$,$\!13$A$E$B$,$\$D$\!12$A$E$B$C$.$\$\!12$A$E$B$C$,$\!12$A$E$B$,$\$D$\!11$A$E$B$C$.$\$\!11$A$E$B$C$,$\!11$A$E$B$,$\$D$\!10$A$E$B$C$.$\$\!10$A$E$B$C$,$\!10$A$E$B$,$\$D$\$9$A$E$B$C$.$\$\$9$A$E$B$C$,$\$9$A$E$B$,$\$D$\$8$A$E$B$C$.$\$\$8$A$E$B$C$,$\$8$A$E$B$,$\$D$\$7$A$E$B$C$.$\$\$7$A$E$B$C$,$\$7$A$E$B$,$\$D$\$6$A$E$B$C$.$\$\$6$A$E$B$C$,$\$6$A$E$B$,$\$D$\$5$A$E$B$C$.$\$\$5$A$E$B$C$,$\$5$A$E$B$,$\$D$\$4$A$E$B$C$.$\$\$4$A$E$B$C$,$\$4$A$E$B$,$\$D$\$3$A$E$B$C$.$\$\$3$A$E$B$C$,$\$3$A$E$B$,$\$D$\$2$A$E$B$C$.$\$\$2$A$E$B$C$,$\$2$A$E$B$,$\$D$\$1$A$B$C$.$\$\$1$A$B$C$,$\$1$A$B$,$\$D$\$F$A$E$B$C$.$\$\ [HELLO]::=__$H$\ HQ >QH::=H>Q`pH >QQ::=Q>Q`pQ >Q9::=9>Q`p9 >Q+::=+>Q`p+ >Q*eQ::=*`\ >DUPH::=hH>DUP >DUPQ::=qQ>DUP >DUP9::=n9>DUP >DUP+::=p+>DUP >DUP_::=DUP
 * H::=*[HELLO]
 * Q::=<Q*eQ
 * 9::=*[BOTTLES]
 * eDUP<DUP::=*
 * eDUPh::=H*eDUP
 * eDUPq::=Q*eDUP
 * eDUPn::=9*eDUP
 * eDUPp::=+*eDUP

_*DUP[STDIN]__