stmts_eval e t; ;; let program_eval p = let e = { ienv_var = Hashtbl.create 16; ienv_proc = Hashtbl.create 16} in stmts_eval e p

Procedura główna Plik kk.ml zawiera "procedurę główną" i wywołuje nasz parser.

open Program let _ = if Array.length Sys.argv <= 1 then print_string ("Usage: "^(Sys.argv.(0))^" <k program>\n") else let p = Parser.program Lexer.token (Lexing.from_channel (open_in Sys.argv.(1))) in program_eval p

Makefile W tworzeniu Makefile pomocny może być program ocamldep, choć nie radzi on sobie bezpośrednio z plikami .mll i .mly.

all: kk kk_opt: program.cmx lexer.cmx parser.cmx kk.cmx ocamlopt -o $@ $^ kk: program.cmo lexer.cmo parser.cmo kk.cmo ocamlc -o $@ $^ %.ml: %.mll ocamllex $< %.mli %.ml: %.mly ocamlyacc $< %.cmo: %.ml ocamlc -c $< %.cmx: %.ml ocamlopt -c $< %.cmi: %.mli ocamlc -c $<

kk.cmo: lexer.cmo parser.cmi program.cmo kk.cmx: lexer.cmx parser.cmx program.cmx lexer.cmo: parser.cmi lexer.cmx: parser.cmx parser.cmo: program.cmo parser.cmi parser.cmx: program.cmx parser.cmi parser.cmi: program.cmo

Użycie $ ./kk fib.k 20 > 6765 $

Kategoria:Generatory parserów Kategoria:Meta Language