Чтение чисел из 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), делает то же самое, но работает быстрее. Эти предикаты не документированы.

Другие вопросы по тегам