For ranges on atoms 0 (zero) can be used for indicating unlimited range. So it would be logical to do that here too. Problem is that it is not obvious what the maximum number of repeats should be, (e.g. in case of crooked path, or a Reflecting Bishop on a non-square board) and that it is rather harmful for efficiency to use a too-large value. (It is like defining a Rook as WafWafafWafafafW... with ever longer lame leaps, the path of those tested over and over again for emptiness.) That also makes it difficult for the Diagram to determine it. Remember that 'artificial intelligence' really is a eufemism for 'artificial stupidity, applied in brute force'.
Life will become easier when I will extend the XBetza parser to handle the parentheses directly, instead of through a preprocessor that makes a different move for every number of repeats. The current move generator already uses a system where you can have a move of very many legs, all optional, for doing old-fashioned zB or qN. Provided that the legs are just direction changes of a slider/rider path. It can even do (grass)hopping versions of those moves. This is an efficient method, and the path can be made far longer than needed, without any impact on efficiency. The move generator would just traverse the entire path once, emitting a move at every step where continuation is marked as optional, and stop when it hits a piece or goes off board, no matter how many optional continuations remain in the definition.
For ranges on atoms 0 (zero) can be used for indicating unlimited range. So it would be logical to do that here too. Problem is that it is not obvious what the maximum number of repeats should be, (e.g. in case of crooked path, or a Reflecting Bishop on a non-square board) and that it is rather harmful for efficiency to use a too-large value. (It is like defining a Rook as WafWafafWafafafW... with ever longer lame leaps, the path of those tested over and over again for emptiness.) That also makes it difficult for the Diagram to determine it. Remember that 'artificial intelligence' really is a eufemism for 'artificial stupidity, applied in brute force'.
Life will become easier when I will extend the XBetza parser to handle the parentheses directly, instead of through a preprocessor that makes a different move for every number of repeats. The current move generator already uses a system where you can have a move of very many legs, all optional, for doing old-fashioned zB or qN. Provided that the legs are just direction changes of a slider/rider path. It can even do (grass)hopping versions of those moves. This is an efficient method, and the path can be made far longer than needed, without any impact on efficiency. The move generator would just traverse the entire path once, emitting a move at every step where continuation is marked as optional, and stop when it hits a piece or goes off board, no matter how many optional continuations remain in the definition.