| Index: tools/lexer_generator/dfa.py
|
| diff --git a/tools/lexer_generator/dfa.py b/tools/lexer_generator/dfa.py
|
| index d191e0518550f014d15076cf259b102dfd77786b..545fe84b6ee5d5e5531b89eabfdc84cc72c1dc23 100644
|
| --- a/tools/lexer_generator/dfa.py
|
| +++ b/tools/lexer_generator/dfa.py
|
| @@ -55,14 +55,17 @@ class DfaState(AutomatonState):
|
|
|
| # TODO abstract state matching
|
| def __matches(self, match_func, value):
|
| - f = lambda acc, (k, vs): acc | set([vs]) if match_func(k, value) else acc
|
| + # f collects states whose corresponding TransitionKey matches 'value'.
|
| + f = (lambda acc, (key, state):
|
| + acc | set([state]) if match_func(key, value) else acc)
|
| matches = reduce(f, self.__transitions.items(), set())
|
| + # Since this is a dfa, we should have at most one such state. Return it.
|
| if not matches:
|
| return None
|
| assert len(matches) == 1
|
| return iter(matches).next()
|
|
|
| - def char_matches(self, value):
|
| + def next_state_with_char(self, value):
|
| return self.__matches(lambda k, v : k.matches_char(v), value)
|
|
|
| def key_matches(self, value):
|
|
|