aboutsummaryrefslogtreecommitdiffstats
path: root/expr.py
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2012-12-24 15:39:35 +0100
committerbnewbold <bnewbold@robocracy.org>2012-12-24 15:39:35 +0100
commit2403b07ec0a7586108798271fa04eb034445f51d (patch)
tree805f1ac5b46b484799c7c585f46b626da890dd96 /expr.py
parent4818443a6a7abb9fe3976dd5846d42816e9d2328 (diff)
downloadbytetunes-2403b07ec0a7586108798271fa04eb034445f51d.tar.gz
bytetunes-2403b07ec0a7586108798271fa04eb034445f51d.zip
updates to documentation, code cleanup, comments
Diffstat (limited to 'expr.py')
-rw-r--r--expr.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/expr.py b/expr.py
index 0336ddd..c19b2de 100644
--- a/expr.py
+++ b/expr.py
@@ -1,5 +1,9 @@
"""
+Crude bytetunes parsing and playback routines in python.
+
+Probably has lots of bugs; see TODO file.
+
PARENS: '(' (EXPR | ATOM) ')'
EXPR: (BINARY | PARENS | NOT)
BINARY: (ATOM | EXPR) BOPER (ATOM | EXPR)
@@ -140,6 +144,7 @@ def schemify(ast):
def test_parse():
"""
+ TODO
"""
def tokenize(s):
@@ -244,7 +249,8 @@ def test_preparse():
assert preparse(tokenize("()()()()()()")) == []
assert preparse(tokenize("(((((())))))")) == []
assert preparse(tokenize("(1 + (2 >> 3) / 5)")) == \
- [('PARENS', ('NUM', 1), ('OPER', '+'), ('PARENS', ('NUM', 2), ('OPER', 'r'), ('NUM', 3)), ('OPER', '/'), ('NUM', 5))]
+ [('PARENS', ('NUM', 1), ('OPER', '+'), ('PARENS', ('NUM', 2),
+ ('OPER', 'r'), ('NUM', 3)), ('OPER', '/'), ('NUM', 5))]
print "\tall passed!"
def test_parse():
@@ -260,8 +266,10 @@ def test_parse():
assert parse(preparse(tokenize("()"))) == tuple()
assert parse(preparse(tokenize("0"))) == ('ATOM', ('NUM', 0))
assert parse(preparse(tokenize("~1"))) == ('NOT', ('ATOM', ('NUM', 1)))
- assert parse(preparse(tokenize("~~1"))) == ('NOT', ('NOT', ('ATOM', ('NUM', 1))))
- assert parse(preparse(tokenize("~~t"))) == ('NOT', ('NOT', ('ATOM', ('VAR',))))
+ assert parse(preparse(tokenize("~~1"))) == \
+ ('NOT', ('NOT', ('ATOM', ('NUM', 1))))
+ assert parse(preparse(tokenize("~~t"))) == \
+ ('NOT', ('NOT', ('ATOM', ('VAR',))))
assert parse(preparse(tokenize("1<<1"))) == \
('BINARY', 'l', ('ATOM', ('NUM', 1)), ('ATOM', ('NUM', 1)))
assert parse(preparse(tokenize("1^1"))) == \
@@ -276,8 +284,10 @@ def test_parse():
assert parse(preparse(tokenize("1 ~"))) == "SHOULD FAIL"
except:
pass
- assert strmachine(parse(preparse(tokenize("1 + 2 * 3 ^ 5 | 6 & 7 >> 8 + ~ 9")))) == \
+ assert strmachine(parse(preparse(tokenize(
+ "1 + 2 * 3 ^ 5 | 6 & 7 >> 8 + ~ 9")))) == \
"(| (^ (+ 1 (* 2 3)) 5) (& 6 (>> 7 (+ 8 (~ 9)))))"
+ print "\tall passed!"
def test_tokenize():
print "------ test_tokenize"