diff options
Diffstat (limited to 'bin')
| -rw-r--r-- | bin/qsp_parser.ml | 20 | 
1 files changed, 14 insertions, 6 deletions
| diff --git a/bin/qsp_parser.ml b/bin/qsp_parser.ml index f2b21f9..0459fe2 100644 --- a/bin/qsp_parser.ml +++ b/bin/qsp_parser.ml @@ -43,14 +43,22 @@ let () =    let file_name = List.hd file_names in    let ic = Stdlib.open_in file_name in +    (*let lexer = Lexing.from_channel ~with_positions:true ic in*) -  let lexer = Sedlexing.Utf8.from_channel ic in -  let result = -    Qparser.Analyzer.parse -      (module Qsp_syntax.Type_of) -      (module Sedlexing.Utf8) -      lexer +  let lexer, mod_ = +    match Filename.extension file_name with +    | ".qsrc" -> +        ( Sedlexing.Utf8.from_channel ic, +          (module Sedlexing.Utf8 : Qparser.Lexer.Encoding) ) +    | ".txt" -> +        ( Sedlexing.Utf16.from_channel ic (Some Little_endian), +          (module struct +            let lexeme lexbuf = Sedlexing.Utf16.lexeme lexbuf Little_endian true +          end : Qparser.Lexer.Encoding) ) +    | _ -> raise (Failure "unknown extension")    in + +  let result = Qparser.Analyzer.parse (module Qsp_syntax.Type_of) mod_ lexer in    match result with    | Ok f -> (        let report = List.fold_left (f []) ~init:[] ~f:(filter_report filters) in | 
