#!/usr/bin/env python3

import sys
from doctype import DocType
from xpath import *

def terminals(node, doc):
    result = []
    ids = set(())
    for n in FIND(doc, '''$node/descendant-or-self::node[@pt or (@index and not(@cat or @pt))]'''):
        if n.pt != "":
            if not n.id in ids:
                ids.add(n.id)
                result.append(n)
        else:
            for m in terminals(doc.indexed[n.index], doc):
                if not m.id in ids:
                    ids.add(m.id)
                    result.append(m)
    return result

def deste(node, doc):
    return FIND(doc, '''$node//node[@cat="du"
            and
            count(.//node[node[@lemma=("hoe","deste")
                               or
                               (node[@lemma="des"] and node[@lemma="te"])]
                          and
                          node[@graad="comp"]])>1]''')

def processFile(filename):
    doc = DocType(filename)
    results = []
    for node in deste(doc.node, doc):
        if len(deste(node, doc)) == 0:
            results.append(node)
    for r in results:
        sys.stdout.write("{}\n    {}\t".format(doc.sentid, r.id))
        terms = terminals(r, doc)
        terms.sort(key=lambda k: k.begin)
        for t in terms:
            sys.stdout.write(t.word + " ")
        sys.stdout.write("\n")


for name in sys.argv[1:]:
    processFile(name)
