Browse Source

Merge branch 'julienmalard-master'

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.10.0
Erez Sh 4 years ago
parent
commit
c4423910ff
1 changed files with 9 additions and 2 deletions
  1. +9
    -2
      lark/reconstruct.py

+ 9
- 2
lark/reconstruct.py View File

@@ -1,3 +1,5 @@
import unicodedata

from collections import defaultdict from collections import defaultdict


from .tree import Tree from .tree import Tree
@@ -93,6 +95,9 @@ def make_recons_rule(origin, expansion, old_expansion):
def make_recons_rule_to_term(origin, term): def make_recons_rule_to_term(origin, term):
return make_recons_rule(origin, [Terminal(term.name)], [term]) return make_recons_rule(origin, [Terminal(term.name)], [term])


def _isalnum(x):
# Categories defined here: https://www.python.org/dev/peps/pep-3131/
return unicodedata.category(x) in ['Lu', 'Ll', 'Lt', 'Lm', 'Lo', 'Nl', 'Mn', 'Mc', 'Nd', 'Pc']


class Reconstructor: class Reconstructor:
""" """
@@ -193,12 +198,14 @@ class Reconstructor:
else: else:
yield item yield item


def reconstruct(self, tree):
def reconstruct(self, tree, postproc=None):
x = self._reconstruct(tree) x = self._reconstruct(tree)
if postproc:
x = postproc(x)
y = [] y = []
prev_item = '' prev_item = ''
for item in x: for item in x:
if prev_item and item and prev_item[-1].isalnum() and item[0].isalnum():
if prev_item and item and _isalnum(prev_item[-1]) and _isalnum(item[0]):
y.append(' ') y.append(' ')
y.append(item) y.append(item)
prev_item = item prev_item = item


Loading…
Cancel
Save