plugin for sql
[afterthought.git] / aft.ml
1 open Xpath_syntax
2 open Xpath_ext
3 open Aft_parser
4 open Aft_lexer
5 open Aft_minterms
6 open Aft_types
7 open Printf
8 open Python_dict
9 open Python
10 open Sql
11 open Globals
12
13 let lookup_term m_syms termid =
14     if (termid<255) then
15       let str = Array.get m_syms termid in
16         (pretty_print_xpath_path str)
17     else
18       let str = Array.get m_syms (termid-255) in
19         String.concat "" ["!";(pretty_print_xpath_path str)]
20
21 let rec print_term m_syms lst = 
22     match lst with
23       |(a::(b::cdr)) ->
24           let str = lookup_term m_syms a in
25             printf "%s." str;print_term m_syms (b::cdr)
26       |(a::cdr) ->
27           let str = lookup_term m_syms a in
28             printf "%s" str;print_term m_syms cdr
29       |[] -> printf "\n"
30
31 let main () =
32   let l_inp = Aft_lexer.parse_from_channel Pervasives.stdin in
33   let l = aft_to_il l_inp in
34   let m_list, m_syms, n_terms = aft_to_minterms l in
35   let opt_order = optimize_minterms m_syms n_terms in
36   let o_aft = minterms_to_aft m_list m_syms opt_order n_terms in
37   let o_py = from_aft o_aft in
38     (*print_minterms m_list;*)
39     (*List.iter (fun x->printf "%d->" x;printf "%s\n" (lookup_term m_syms x))
40       opt_order*)
41     pretty_print_block 0 o_py
42 ;;
43
44 main ()