1: # 3026 "./lpsrc/flx_parser.ipk" 2: 3: open Flx_ast 4: open Flx_exceptions 5: open Flx_parse 6: 7: let parse_file 8: (filename : string) 9: (basedir :string) 10: (include_dirs : string list) 11: expand_expr 12: = 13: let pre_tokens = 14: Flx_pretok.pre_tokens_of_filename 15: filename 16: basedir 17: include_dirs 18: expand_expr 19: in 20: let tokens = Flx_lex1.translate pre_tokens in 21: let hash_include_files, tokens = match tokens with 22: | HASH_INCLUDE_FILES fs :: t -> fs,t 23: | _ -> assert false 24: in 25: begin 26: let toker = (new Flx_tok.tokeniser tokens) in 27: let parse_tree = 28: try 29: Flx_parse.compilation_unit 30: (toker#token_src) 31: (Lexing.from_string "dummy" ) 32: with 33: | Failure s -> 34: begin 35: toker#report_syntax_error; 36: print_endline s; 37: raise (Flx_exceptions.ParseError ("Failure \""^s^"\" Parsing File")) 38: end 39: | Flx_exceptions.ClientError _ 40: | Flx_exceptions.ClientError2 _ 41: | Flx_exceptions.ClientErrorn _ as x -> 42: begin 43: toker#report_syntax_error; 44: raise x 45: end 46: 47: | Flx_exceptions.RDP_match_fail (sr1,sr2,s) as x -> 48: begin 49: toker#report_syntax_error; 50: clierr2 sr1 sr2 ("User Syntax Parse Error " ^ s) 51: end 52: 53: | x -> 54: begin 55: toker#report_syntax_error; 56: print_endline (Printexc.to_string x); 57: raise (Flx_exceptions.ParseError "Unknown exception Parsing File") 58: end 59: in hash_include_files, parse_tree 60: end 61: 62: let parse_string (data : string) (filename : string) expand_expr = 63: let pre_tokens = 64: Flx_pretok.pre_tokens_of_string data filename expand_expr 65: in 66: let tokens = Flx_lex1.translate pre_tokens in 67: begin 68: let toker = (new Flx_tok.tokeniser tokens) in 69: try 70: Flx_parse.compilation_unit 71: (toker#token_src) 72: (Lexing.from_string "dummy" ) 73: with _ -> begin 74: toker#report_syntax_error; 75: raise (Flx_exceptions.ParseError "Parsing String") 76: end 77: end 78: 79:
1: # 3106 "./lpsrc/flx_parser.ipk" 2: open Flx_ast 3: 4: val parse_file : 5: string -> 6: string -> 7: string list -> 8: (string -> expr_t -> expr_t) -> 9: string list * compilation_unit_t 10: 11: val parse_string : 12: string -> 13: string -> 14: (string -> expr_t -> expr_t) -> 15: compilation_unit_t 16: