test.ml
3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
(*
* ENIAMintegration, a library that integrates ENIAM with other parsers.
* Copyright (C) 2016 Wojciech Jaworski <wjaworski atSPAMfree mimuw dot edu dot pl>
* Copyright (C) 2016 Institute of Computer Science Polish Academy of Sciences
*
* This library is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*)
let test_strings = [
"Szpak frunie.";
"Kot np. miauczy.";
"Ala ma kota.";
"Ale mają kota:";
"Szpak frunie. Kot miauczy.";
"Szpak powiedział: „Frunę. Kiszę.”";
]
let wait_for_server () =
let rec wait s a =
try Unix.connect s a
with _ -> Unix.sleep 1; wait s a in
let s = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 6 in
let a = Unix.ADDR_INET (Unix.inet_addr_loopback, 10089) in
wait s a;
Unix.shutdown s Unix.SHUTDOWN_SEND;
Unix.close s
let start_server () =
let client_out, server_out = Unix.pipe () in
let client_err, server_err = Unix.pipe () in
let pid = Unix.create_process "concraft-pl" [|"concraft-pl"; "server"; "--inmodel"; "nkjp-model-0.2.gz"|]
Unix.stdin server_out server_err in
List.iter Unix.close [client_out; server_out; client_err; server_err];
wait_for_server ();
pid
let stop_server pid =
Unix.kill pid Sys.sigint
let tag s =
Unix.open_process_full ("echo \"" ^ s ^ "\" | concraft-pl client")
[|"PATH=" ^ Sys.getenv "PATH"; "LANG=en_GB.UTF-8"|]
let _ =
print_endline "Starting Server";
let pid = start_server () in
print_endline "Ready";
let concraft_in, concraft_out, concraft_err = tag "Ala ma kota." in
try
while true do
print_endline @@ input_line concraft_in
done
with End_of_file -> ();
try
while true do
print_endline @@ "concraft error message: " ^ input_line concraft_err
done
with End_of_file -> ();
ignore @@ Unix.close_process_full (concraft_in, concraft_out, concraft_err);
stop_server pid
(*
let _ =
ENIAMpreIntegration.mate_parser_enabled := true;
print_endline "Testy wbudowane";
Xlist.iter test_strings (fun s ->
print_endline ("\nTEST: " ^ s);
let text,tokens = ENIAMsubsyntax.parse_text s in
let text = ENIAMpreIntegration.parse_text ENIAMsubsyntaxTypes.Struct tokens text in
(* print_endline (ENIAMtokenizer.xml_of tokens); *)
print_endline (ENIAMsubsyntaxStringOf.tokens tokens);
print_endline "";
print_endline (ENIAMsubsyntaxStringOf.text "" tokens text));
(* print_endline "Testy użytkownika.";
print_endline "Wpisz tekst i naciśnij ENTER, pusty tekst kończy.";
let s = ref (read_line ()) in
while !s <> "" do
let tokens = ENIAMtokenizer.parse !s in
(* print_endline (ENIAMtokenizer.xml_of tokens); *)
Xlist.iter tokens (fun token -> print_endline (ENIAMtokenizer.string_of 0 token));
print_endline "Wpisz tekst i naciśnij ENTER, pusty tekst kończy.";
s := read_line ()
done;*)
()
*)