我已经为此工作了超过 2 天,但没有成功。这将是一个常见问题,但我找不到解决方案。我确实搜索过!
问题:
我有一些数据要读取,比如每行 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 }?
可能是我误解了谓词。我的语法中有几个其他谓词似乎有效,但它们不是这种类型。在那里,我试图根据输入文件的版本跳过一些语法。
谢谢。