私はこれに2日以上取り組んできましたが、成功しませんでした。これはよくある問題ですが、解決策が見つかりません。検索してみました!
問題:
たとえば、1行あたり5つの値を読みたいデータがあります。以前に読み取った値からいくつ読み取るかを知っています。たとえば、読み取る 6 つの値が 2 行にまたがる...
6
10 20 30 40 50
60
したがって、5 つの変数ごとに新しい行を読みたいと思います。変数が 0 の場合は、これを処理するためにビットをスキップします。正確に 5 の倍数の変数を読み取りたい場合は、NL 呼び出しの重複を避けたいと考えています。
私はこれを試しました...
varblock[ Integer count ]
@init{
Integer varIndex = 0;
}
: { count > 0 }? ( dp=NUMBER { count--; varIndex++; }
{ ( varIndex \% 5 ) == 0 }? NL { varIndex = 0; }
)+ { varIndex > 0 }? => NL
|
;
しかし、私は...
failed predicate: { ( varIndex \% 5 ) == 0 }?
述語を誤解している可能性があります。私の文法には他にも機能しているように見える述語がいくつかありますが、それらはこのタイプではありません。そこでは、入力ファイルのバージョンに応じて、文法の一部をスキップしようとしています。
ありがとう。