| Index: tools/lexer_generator/transition_keys.py
|
| diff --git a/tools/lexer_generator/transition_keys.py b/tools/lexer_generator/transition_keys.py
|
| index 2d404c4eceb1bc392428d0722aacfe7ddec8389c..ca1f29a3fad2f5ab34eb00d65e4895f53d32a7d2 100644
|
| --- a/tools/lexer_generator/transition_keys.py
|
| +++ b/tools/lexer_generator/transition_keys.py
|
| @@ -166,13 +166,19 @@ class TransitionKey:
|
|
|
| def matches_key(self, key):
|
| assert isinstance(key, self.__class__)
|
| - assert key != TransitionKey.epsilon()
|
| + assert key != TransitionKey.epsilon() and not key.__is_unique()
|
| assert len(key.__ranges) == 1
|
| subkey = key.__ranges[0]
|
| + matches = False
|
| for k in self.__ranges:
|
| - if k[0] <= subkey[0] and k[1] >= subkey[1]: return True
|
| - # TODO assert disjoint
|
| - return False
|
| + if k[0] <= subkey[0]:
|
| + assert subkey[1] <= k[1] or subkey[0] > k[1]
|
| + if subkey[0] < k[0]:
|
| + assert subkey[1] < k[0]
|
| + if k[0] <= subkey[0] and k[1] >= subkey[1]:
|
| + assert not matches
|
| + matches = True
|
| + return matches
|
|
|
| def __hash__(self):
|
| if self.__cached_hash == None:
|
|
|