Exemplo n.º 1
0
            lst = listEval(" ".join(fields[2:]))

            if word == "EPSILON":
                rhs = []
            else:
                rhs = [word,]

            for num,prob in enumerate(lst):
                preterm = "%s_%d" % (pos, num)
                rule = HierRule(level)
                rule.setup(preterm, rhs, float(prob))

                if [rule.lhs,] == rule.rhs:
                    print >>sys.stderr, "Warning: X->X", rule.lhs, rule.rhs
                elif rule.epsilon():
                    grammar.addEpsilonRule(rule)
                else:
                    grammar.addTerminalRule(rule)

    grammar.writeback("terminals")
    grammar.writeback("epsilons")

    for level in range(maxLevel+1):
        print >>sys.stderr, "Level", level

        lookahead = workDir/("%s-txt-lvl%d.lookahead.gz" %
                             (basename, level))

        print >>sys.stderr, "Lookahead data from", lookahead

        if lookahead.endswith(".gz"):