Reviewers: marja,
Message:
Committed patchset #1 manually as r17905 (presubmit successful).
Description:
Experimental parser: cleanup transition iteration a little
[email protected]
BUG=
Committed: https://code.google.com/p/v8/source/detail?r=17905
Please review this at https://codereview.chromium.org/78133002/
SVN Base: https://v8.googlecode.com/svn/branches/experimental/parser
Affected files (+8, -10 lines):
M tools/lexer_generator/dfa.py
M tools/lexer_generator/nfa.py
Index: tools/lexer_generator/dfa.py
diff --git a/tools/lexer_generator/dfa.py b/tools/lexer_generator/dfa.py
index
154caef89c09d0ca26ed4fd2507994d251815e95..12d3dce014e8efeba8f891310a3e85b079af3170
100644
--- a/tools/lexer_generator/dfa.py
+++ b/tools/lexer_generator/dfa.py
@@ -59,10 +59,8 @@ class DfaState(AutomatonState):
# TODO abstract state matching
def __matches(self, match_func, value):
- # f collects states whose corresponding TransitionKey matches 'value'.
- f = (lambda acc, (key, state):
- acc | set([state]) if match_func(key, value) else acc)
- return reduce(f, self.__transitions.items(), set())
+ items = self.__transitions.items()
+ return [state for (key, state) in items if match_func(key, value)]
def transition_state_iter_for_char(self, value):
return iter(self.__matches(lambda k, v : k.matches_char(v), value))
@@ -76,7 +74,7 @@ class DfaState(AutomatonState):
return None
# Since this is a dfa, we should have at most one such state. Return
it.
assert len(matches) == 1
- return iter(matches).next()
+ return matches[0]
class Dfa(Automaton):
Index: tools/lexer_generator/nfa.py
diff --git a/tools/lexer_generator/nfa.py b/tools/lexer_generator/nfa.py
index
289ec48eee21980b156b2a1eea7a153372d59bd6..344ef70c54d861eb2e3be489b1ef3209d3bdc788
100644
--- a/tools/lexer_generator/nfa.py
+++ b/tools/lexer_generator/nfa.py
@@ -99,15 +99,15 @@ class NfaState(AutomatonState):
def __matches(self, match_func, value):
# f collects states whose corresponding TransitionKey matches 'value'.
- f = (lambda acc, (key, states):
- acc | states if match_func(key, value) else acc)
- return reduce(f, self.__transitions.items(), set())
+ items = self.__transitions.items()
+ iters = [iter(states) for (key, states) in items if match_func(key,
value)]
+ return chain(*iters)
def transition_state_iter_for_char(self, value):
- return iter(self.__matches(lambda k, v : k.matches_char(v), value))
+ return self.__matches(lambda k, v : k.matches_char(v), value)
def transition_state_iter_for_key(self, value):
- return iter(self.__matches(lambda k, v : k.is_superset_of_key(v),
value))
+ return self.__matches(lambda k, v : k.is_superset_of_key(v), value)
class Nfa(Automaton):
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.