Чтение чисел из stdio в B-Prolog
Какой самый простой способ прочитать число или несколько разделенных пробелами чисел (НЕ за которыми следует точка) в B-Prolog из стандартного ввода?
Например, для ECliPse я написал эти простые предикаты (мне не нужна обработка ошибок):
read_number(N) :-
read_token(Token, _),
(
Token == -
->
read_token(Nabs, _),
N is -1 * Nabs
;
N is Token
).
read_numbers_list(Ns) :-
read_string(end_of_line, _, String),
split_string(String, " ", "", Ss),
( foreach(S, Ss), foreach(N, Ns) do
number_string(N, S) ).
Но написание чего-то подобного для B-Prolog выглядит слишком сложным для меня - здесь нет read_token или split_string...
Есть ли простой способ для такой мирской задачи? Может быть, какой-то стандартный предикат я как-то упустил?
1 ответ
Я просто обработал ввод за пределами Пролога, а затем использовал read/1
,
Кроме того, информация от создателя B-Prolog Ненга Фа Чжоу ( https://groups.google.com/forum/?fromgroups):
Вы можете использовать внутренний предикат, называемый read_next_token(Type,Val), для ваших целей. Другой предикат, названный b_NEXT_TOKEN_ff(Type,Val), делает то же самое, но работает быстрее. Эти предикаты не документированы.