Author: Richard Plangger <planri...@gmail.com> Branch: fix-gen-dfa Changeset: r84574:fa9847af949c Date: 2016-05-22 18:27 +0200 http://bitbucket.org/pypy/pypy/changeset/fa9847af949c/
Log: refactored output function to be tested more easily added not yet complete test for the same function diff --git a/pypy/interpreter/pyparser/genpytokenize.py b/pypy/interpreter/pyparser/genpytokenize.py --- a/pypy/interpreter/pyparser/genpytokenize.py +++ b/pypy/interpreter/pyparser/genpytokenize.py @@ -265,20 +265,25 @@ def output(name, dfa_class, dfa): import textwrap + lines = [] i = 0 for line in textwrap.wrap(repr(dfa.accepts), width = 50): if i == 0: - print "accepts =", line + lines.append("accepts = ") else: - print " ", line + lines.append(" ") + lines.append(line) + lines.append("\n") i += 1 import StringIO - print "states = [" + lines.append("states = [\n") for numstate, state in enumerate(dfa.states): - print " #", numstate + lines.append(" #") + lines.append(str(numstate)) + lines.append('\n') s = StringIO.StringIO() i = 0 - for k, v in sorted(state.items()): + for k, v in enumerate(state): i += 1 if k == '\x00default': k = "automata.DEFAULT" @@ -298,22 +303,24 @@ for line in text: line = line.replace('::', ': ') if i == 0: - print ' {' + line + lines.append(' {') else: - print ' ' + line + lines.append(' ') + lines.append(line) + lines.append('\n') i += 1 - print " ]" - print "%s = automata.%s(states, accepts)" % (name, dfa_class) - print + lines.append(" ]\n") + lines.append("%s = automata.%s(states, accepts)\n\n" % (name, dfa_class)) + return ''.join(lines) def main (): pseudoDFA = makePyPseudoDFA() - output("pseudoDFA", "DFA", pseudoDFA) + print output("pseudoDFA", "DFA", pseudoDFA) endDFAMap = makePyEndDFAMap() - output("double3DFA", "NonGreedyDFA", endDFAMap['"""']) - output("single3DFA", "NonGreedyDFA", endDFAMap["'''"]) - output("singleDFA", "DFA", endDFAMap["'"]) - output("doubleDFA", "DFA", endDFAMap['"']) + print output("double3DFA", "NonGreedyDFA", endDFAMap['"""']) + print output("single3DFA", "NonGreedyDFA", endDFAMap["'''"]) + print output("singleDFA", "DFA", endDFAMap["'"]) + print output("doubleDFA", "DFA", endDFAMap['"']) # ______________________________________________________________________ diff --git a/pypy/interpreter/pyparser/test/test_gendfa.py b/pypy/interpreter/pyparser/test/test_gendfa.py new file mode 100644 --- /dev/null +++ b/pypy/interpreter/pyparser/test/test_gendfa.py @@ -0,0 +1,12 @@ +from pypy.interpreter.pyparser.automata import DFA, DEFAULT +from pypy.interpreter.pyparser.genpytokenize import output + +def test_states(): + d = DFA([{"\x00": 1}, {"\x01": 0}], [False, True]) + assert output('test', DFA, d) == """\ +accepts = [False, True] +states = [ + ] +test = automata.pypy.interpreter.pyparser.automata.DFA(states, accepts) + +""" _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit