from treepace import * Node("label") from glob import glob from IPython.display import display with open(glob('*.ipynb')[0], 'rb') as file_handle: display(Node(file_handle)) root = Node('root', [Node('c1'), Node('c2', [Node('subchild')])]) Tree(root) print(Tree.load('root (element1 (sub-element) element2)').save(IndentedText)) Subtree([root, root.children[1]]) c2 = root.children[1] Match([Subtree([c2, c2.parent]), Subtree([c2]) ]) tree = Tree.load('a (b c)') tree.search('.') tree.search('a') tree.search('[node.value != "c"]') tree.search('[_.upper() == "C"]') tree.search('a < b') tree.search('a < b, c')[0] tree.search('a < c & b')[0] Tree.load('a (b (c) d (e))').search('a < b , d')[0] tree.search('{a < {b}, {c}}')[0] Tree.load('m (n (o) m (n))').search('{m < n}, $1')[0] nums = Tree(Node(1, [Node(-1), Node(0.5)])) match = nums.search('{[_ != 2]} < [abs(_) == $1]') match[0].group(0) Tree.load('node (node (node))').match('node < node') fruits = Tree.load('fruits (apple pear apple)') display(fruits) if fruits.fullmatch('fruits < apple & pear'): print('The stock contains at least one apple and pear, but no other fruit.') else: print('The condition is not met.') shop = Tree.load('shop (item (bread) item (water) item (roll) item (water))') pattern = '{item} < water' display(shop.search(pattern)) shop.replace(pattern, '$1 < juice') display(shop) subject = Tree.load('a (b)') print('Original:') display(subject) subject.transform('''x -> y a -> x''') print('Transformed:') display(subject) text = '''
An example 3 4
''' doc = Tree.load(text, XmlText) doc doc.transform(''' article -> html < body heading -> h1 content -> p calc < plus < elem<{.}>, elem<{.}> -> [text(num($1) + num($2))] ''') display(doc) print(doc.save(XmlText))