from schema import analyzer from schema.language import language ndef = analyzer.normalize(language) inv = analyzer.partial_inversion(ndef) for key, argv in ndef.items(): print key if argv: print ' ' + '\n '.join(map(repr, argv)) print 'inversion' print inv for name, (nxt, in_list, cost) in analyzer.template_chains(inv, analyzer.String): if in_list: print "%12r[0] > [%r]" % (name, nxt) else: print "%12r[0] > %r" % (name, nxt)
} script_directory = in_module('scripts') for filename in os.listdir(script_directory): if not os.path.isdir(filename) and filename.endswith('.language'): name, ext = os.path.splitext(filename) path = os.path.join(script_directory, filename) known_languages[name] = lambda: load_file(path) filename = sys.argv[1] langtype = os.path.splitext(filename)[1][1:] current_language = known_languages[langtype]() syn = Synthetizer(current_language) ndef = analyzer.normalize(current_language) inv = analyzer.partial_inversion(ndef) chains = analyzer.build_all_chains(ndef, inv) for name, argv in ndef.items(): print 'TDEF:', name, ', '.join(map(repr, argv)) for name, sources in inv.items(): print "INV:", name, sources if os.path.exists(filename): document = load_file(filename) else: document = mkstruct(ndef, syn, current_language.name, []) proxy.mkroot(None, document)