Execute HQ9+/Python: Difference between revisions
Content added Content deleted
(no need to remark on +) |
(Replace if ... elif ... elif ... with dispatch table.) |
||
Line 36: | Line 36: | ||
print "99 bottles of beer on the wall." |
print "99 bottles of beer on the wall." |
||
print |
print |
||
def incr(): |
|||
⚫ | |||
if len(sys.argv) != 2: |
if len(sys.argv) != 2: |
||
Line 51: | Line 54: | ||
acc = 0 |
acc = 0 |
||
src = s.read() |
src = s.read() |
||
# Implement interpreter using a dispatch table |
|||
dispatch = { |
|||
'h': hello, |
|||
⚫ | |||
⚫ | |||
'+': incr |
|||
⚫ | |||
for i in src.lower(): |
for i in src.lower(): |
||
if i |
if i in dispatch: |
||
dispatch[i]() |
|||
elif i == 'q': |
|||
⚫ | |||
elif i == '9': |
|||
⚫ | |||
elif i == '+': |
|||
⚫ | |||
⚫ | |||
pass # It's a comment, ignore it.</lang> |
Revision as of 13:19, 2 August 2009
Execute HQ9+/Python is part of RCHQ9+. You may find other members of RCHQ9+ at Category:RCHQ9+.
Execute HQ9+/Python is an implementation of HQ9+.
Other implementations of HQ9+.
This example implements 'H', 'Q', '9' and '+'.
<lang python>import sys
def hello():
print "Hello, world!"
def quine():
print src
def bottles():
for i in range(99,2,-1): print "%d bottles of beer on the wall" % i print "%d bottles of beer" % i print "Take one down, pass it around" print "%d bottles of beer on the wall" % (i-1) print
print "2 bottles of beer on the wall" print "2 bottles of beer" print "Take one down, pass it around" print "1 bottle of beer on the wall" print
print "1 bottle of beer on the wall" print "1 bottle of beer" print "Take one down, pass it around" print "No more bottles of beer on the wall" print
print "No more bottles of beer on the wall" print "No more bottles of beer on the wall" print "Go to the store and buy some more" print "99 bottles of beer on the wall." print
def incr():
acc +=1
if len(sys.argv) != 2:
print "Usage: ./hq9p.py script.hq9" sys.exit(1)
else:
f = sys.argv[1]
try:
s = open(f,"r")
except IOError, e:
print "Can't open file: " + str(e.args[1]) sys.exit(1)
acc = 0 src = s.read()
- Implement interpreter using a dispatch table
dispatch = {
'h': hello, 'q': quine, '9': bottles, '+': incr }
for i in src.lower():
if i in dispatch: dispatch[i]()