def main():
    if len(sys.argv) < 0:
        usage()
        sys.exit(1)
    
    fname_xpath = sys.argv[1]
    bare_name = fname_xpath[:-len(XPATH_EXT)]
    delta_fwd_fname = bare_name + FWD_EXT;
    delta_bk_fname = bare_name + BK_EXT;
    token_fname = bare_name + TOKENS_EXT;

    print fname_xpath
    qr = qtree.generate_query_tree(fname_xpath)
    nr, delta, no_states = nfa.gen_nfa_delta(qr)
    delta_fwd_table = nfa.gen_delta_table(nr, delta, no_states, qr)
    delta_bk_table = nfa.gen_delta_table(nr, delta, no_states, qr, False)

    write_table(delta_fwd_fname, delta_fwd_table)
    write_table(delta_bk_fname, delta_bk_table)
    write_token_file(token_fname, qtree.extract_token_list(qr))
import sys

import fa
import qtree
import qtree_nfa

UNKNOWN_TOKEN = '[u]'

fname_xpath = sys.argv[1]
fname_alpha = fname_xpath[:-5] + 'tokens'
fname_multi_dfa = fname_xpath[:-5] + 'mdfa'

query_list = list(qtree.query_list(fname_xpath))
qr = qtree.generate_query_tree(query_list)
nr = qtree_nfa.qtree2nfa(qr)
alphabet = nr.alphabet

file_header = [len(query_list), len(alphabet)]

sorted_alphabet = sorted(alphabet.difference(set([UNKNOWN_TOKEN])))
#alphabet_relabeling = dict(zip(sorted_alphabet, xrange(len(sorted_alphabet))))
#alphabet_relabeling[UNKNOWN_TOKEN] = len(sorted_alphabet)

f_alpha = open(fname_alpha, 'w')
for letter in sorted_alphabet:
    f_alpha.write('{0}\n'.format(letter))
f_alpha.close()

sorted_alphabet.append(UNKNOWN_TOKEN)

state_table = list()