| @@ -339,11 +339,11 @@ class TokenTreeToPattern(Transformer): | |||||
| return PatternRE('(?:%s)%s' % (inner.to_regexp(), op), inner.flags) | return PatternRE('(?:%s)%s' % (inner.to_regexp(), op), inner.flags) | ||||
| def interleave(l, item): | |||||
| def _interleave(l, item): | |||||
| for e in l: | for e in l: | ||||
| yield e | yield e | ||||
| if isinstance(e, T): | if isinstance(e, T): | ||||
| if e.data == 'literal': | |||||
| if e.data in ('literal', 'range'): | |||||
| yield item | yield item | ||||
| elif is_terminal(e): | elif is_terminal(e): | ||||
| yield item | yield item | ||||
| @@ -366,11 +366,11 @@ class Grammar: | |||||
| expr = Token('RULE', '__ignore') | expr = Token('RULE', '__ignore') | ||||
| for r, tree, _o in rule_defs: | for r, tree, _o in rule_defs: | ||||
| for exp in tree.find_data('expansion'): | for exp in tree.find_data('expansion'): | ||||
| exp.children = list(interleave(exp.children, expr)) | |||||
| exp.children = list(_interleave(exp.children, expr)) | |||||
| if r == start: | if r == start: | ||||
| exp.children = [expr] + exp.children | exp.children = [expr] + exp.children | ||||
| for exp in tree.find_data('expr'): | for exp in tree.find_data('expr'): | ||||
| exp.children[0] = T('expansion', list(interleave(exp.children[:1], expr))) | |||||
| exp.children[0] = T('expansion', list(_interleave(exp.children[:1], expr))) | |||||
| x = [T('expansion', [Token('RULE', x)]) for x in ignore_names] | x = [T('expansion', [Token('RULE', x)]) for x in ignore_names] | ||||
| _ignore_tree = T('expr', [T('expansions', x), Token('OP', '?')]) | _ignore_tree = T('expr', [T('expansions', x), Token('OP', '?')]) | ||||