1

標準入力から 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 はありません...

そのようなありふれた作業を簡単に行う方法はありますか? どういうわけか見落とした標準的な述語でしょうか?

4

1 に答える 1

0

私は結局、Prologの外で入力を前処理してからを使用することになりread/1ました。

また、B-Prologの作成者であるNeng-Fa Zhou(https://groups.google.com/forum/?fromgroups#!topic/comp.lang.prolog/KSXc2QTWZck)からの情報:

目的に応じて、read_next_token(Type、Val)と呼ばれる内部述語を使用できます。b_NEXT_TOKEN_ff(Type、Val)と呼ばれる別の述語も同じことを行いますが、より高速です。これらの述語は文書化されていません。

于 2013-01-20T19:56:36.080 に答える