5.17. Parser object

Start ocaml section to src/flx_parse_ctrl.ml[1 /1 ]
     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: 
End ocaml section to src/flx_parse_ctrl.ml[1]
Start ocaml section to src/flx_parse_ctrl.mli[1 /1 ]
     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: 
End ocaml section to src/flx_parse_ctrl.mli[1]