Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
left, right = children
combinator = guess_combinator_by_triplet(
binary_rules, cat, left.cat, right.cat)
combinator = combinator or UNKNOWN_COMBINATOR
return Tree.make_binary(cat, left, right, combinator, lang)
else:
assert node.tag == 'lf'
cat = Category.parse(attrib['cat'])
word = attrib['word']
token = Token(word=attrib['word'],
pos=attrib['pos'],
entity=attrib['entity'],
lemma=attrib['lemma'],
chunk=attrib['chunk'])
tokens.append(token)
return Tree.make_terminal(word, cat, lang)
tokens = []
def reduce(item: str) -> None:
nonlocal position
if item[-1] != ')':
token = Token(word=item)
tokens.append(token)
stack.append(item)
return
reduce(item[:-1])
if isinstance(stack[-1], str):
word = stack.pop()
category = stack.pop()
tree = Tree.make_terminal(word, category, lang)
position += 1
else:
assert isinstance(stack[-1], Tree)
children = []
while isinstance(stack[-1], Tree):
tree = stack.pop()
children.append(tree)
category = stack.pop()
if len(children) == 1:
tree = Tree.make_unary(category, children[0], lang)
elif len(children) == 2:
right, left = children
combinator = guess_combinator_by_triplet(
binary_rules, category, left.cat, right.cat)
combinator = combinator or UNKNOWN_COMBINATOR
tree = Tree.make_binary(category, left, right, combinator, lang)