transcode/next/error は、最初に読み込まれた値と、値の後の位置を返すため、次の値を読み込むことができます。
>> transcode/next/error to binary! " a b c "
== [a #{2062206320}]
または、エラーとエラー値の後の位置が表示されます。
>> transcode/next/error to binary! " 1a b c "
== [make error! [
code: 200
type: 'Syntax
id: 'invalid
arg1: "integer"
arg2: "1a"
arg3: none
near: "(line 1) 1a b c "
where: [transcode]
] #{2062206320}]
しかし、ロードする値がブロックで、ブロック内にエラーがある場合は、
- エラーが発生します。
- エラー値の後の位置、および
- ブロック内の適切な値は破棄されます。
ここみたいに
>> transcode/next/error to binary! "[ a b 1c ]"
== [make error! [
code: 200
type: 'Syntax
id: 'invalid
arg1: "integer"
arg2: "1c"
arg3: none
near: "(line 1) [ a b 1c ]"
where: [transcode]
] #{205D}]
私の現在の[*]解決策は、入力文字列を修正し、最後の位置からやり直すことです。このようにして、ブロック全体をリロードして、一度に取得します。
これを処理するより良い方法はありますか?
[*] こちらをご覧ください https://github.com/IngoHohmann/rebol3-tools/blob/master/load-all.r3