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
|
%------------------------------------------------------------------------------%
% Copyright (C) 1999 INRIA/INSA.
%
% Author : Erwan Jahier
% File : browse.op
%
%------------------------------------------------------------------------------%
opium_command(
name : browse,
arg_list : [VarName],
arg_type_list : [string],
abbrev : _,
interface : button,
command_type : opium,
implementation : browse_Op,
parameters : [],
message :
"Call the Mercury term browser. Type `help' at the browser prompt to get \
on-line help"
).
browse_Op(VarName) :-
quote_string(VarName, VarNameQuoted),
send_message_to_socket(browse(VarNameQuoted)),
browser_loop.
browser_loop :-
print("browser> "), flush(user),
( read_and_check(Command) ->
atom_string(Command, CommandStr),
quote_string(CommandStr, CommandStrQuoted),
send_message_to_socket(external_request(CommandStrQuoted)),
read_loop(Msg)
;
send_message_to_socket(external_request('"help"')),
read_loop(Msg)
),
(
Msg = browser_quit,
read_message_from_socket(browser_end),
!
;
Msg = browser_end_command,
!,
browser_loop
;
Msg = error(ErrorMsg),
print(ErrorMsg), nl,
!,
browser_loop
;
print("Msg = "), print(Msg),
print("\n************** Error in browse.op\n")
).
read_loop(MsgOut) :-
read_message_from_socket(Msg),
(
Msg = browser_str(Str),
print(Str),
!,
read_loop(MsgOut)
;
Msg = browser_int(N),
print(N),
!,
read_loop(MsgOut)
;
Msg = browser_nl,
nl,
!,
read_loop(MsgOut)
;
% Msg = browser_quit, browser_end_command, error().
MsgOut = Msg
).
read_and_check(Command) :-
read_string("\n", _, String),
atom_string(Command, String).
|