[pypy-svn] r13189 - pypy/branch/pycompiler/module/recparser/test
adim at codespeak.net
adim at codespeak.net
Wed Jun 8 18:45:46 CEST 2005
Author: adim
Date: Wed Jun 8 18:45:27 2005
New Revision: 13189
Modified:
pypy/branch/pycompiler/module/recparser/test/test_lookahead.py
Log:
added testcases for lookahead
Modified: pypy/branch/pycompiler/module/recparser/test/test_lookahead.py
==============================================================================
--- pypy/branch/pycompiler/module/recparser/test/test_lookahead.py (original)
+++ pypy/branch/pycompiler/module/recparser/test/test_lookahead.py Wed Jun 8 18:45:27 2005
@@ -15,13 +15,13 @@
def test_basic_alternative(self):
- alt = Alternative('alt', *self.tokens)
+ alt = Alternative('alt', self.tokens)
build_first_sets([alt])
assert alt.first_set == self.tokens
def test_basic_sequence(self):
- seq = Sequence('seq', *self.tokens)
+ seq = Sequence('seq', self.tokens)
build_first_sets([seq])
assert seq.first_set == [self.tokens[0]]
@@ -35,18 +35,33 @@
assert kstar.first_set == [tok1, EmptyToken]
-def test_token_comparison():
- assert Token('t1', 'foo') == Token('t1', 'foo')
- assert ('t1', 'foo') == Token('t1', 'foo')
+ def test_maybe_empty_sequence(self):
+ """S -> tok1{0,2} tok2{0,2}
+ ==> S.first_set = [tok1, tok2, EmptyToken]
+ """
+ tok1, tok2, tok3 = self.tokens
+ k1 = KleenStar('k1', 0, 2, tok1)
+ k2 = KleenStar('k1', 0, 2, tok2)
+ seq = Sequence('seq', [k1, k2])
+ build_first_sets([k1, k2, seq])
+ assert seq.first_set == [tok1, tok2, EmptyToken]
- # assert Token('t1', 'foo') == Token('t1', None)
- assert ('t1', 'foo') == Token('t1', None)
- assert Token('t1', 'foo') != Token('t2', 'foo')
- assert ('t1', 'foo') != Token('t2', 'foo')
+ def test_not_empty_sequence(self):
+ """S -> tok1{0,2} tok2{1,2}
+ ==> S.first_set = [tok1, tok2]
+ """
+ tok1, tok2, tok3 = self.tokens
+ k1 = KleenStar('k1', 0, 2, tok1)
+ k2 = KleenStar('k1', 1, 2, tok2)
+ seq = Sequence('seq', [k1, k2])
+ build_first_sets([k1, k2, seq])
+ assert seq.first_set == [tok1, tok2]
+def test_token_comparison():
+ assert Token('t1', 'foo') == Token('t1', 'foo')
+ assert Token('t1', 'foo') != Token('t2', 'foo')
assert Token('t2', 'foo') != Token('t1', None)
- assert ('t2', 'foo') != Token('t1', None)
class TestLookAhead:
@@ -54,17 +69,16 @@
def setup_method(self, method):
self.LOW = Token('LOW', 'low')
self.CAP = Token('CAP' ,'cap')
- self.A = Alternative('A')
+ self.A = Alternative('A', [])
k1 = KleenStar('k1', 0, rule=self.LOW)
k2 = KleenStar('k2', 0, rule=self.CAP)
- self.B = Sequence('B', k1, self.A)
- self.C = Sequence('C', k2, self.A)
+ self.B = Sequence('B', [k1, self.A])
+ self.C = Sequence('C', [k2, self.A])
self.A.args = [self.B, self.C]
build_first_sets([self.A, self.B, self.C, self.LOW, self.CAP, k1, k2])
def test_S_first_set(self):
- for s in [('LOW', 'low'), EmptyToken, ('CAP', 'cap')]:
+ for s in [Token('LOW', 'low'), EmptyToken, Token('CAP', 'cap')]:
assert s in self.A.first_set
assert s in self.B.first_set
assert s in self.C.first_set
-
More information about the Pypy-commit
mailing list