複数行のパースレットを一致させる方法を探しています。コードは次のようになります。
rule(:line) { (match('$').absent? >> any).repeat >> match('$') }
rule(:lines) { line.repeat }
ただし、文字列の末尾に一致するように無限に繰り返されるlines
ため、常に無限ループになります。match('$')
空にすることができる複数の行を一致させることは可能ですか?
irb(main)> lines.parse($stdin.read)
This
is
a
multiline
string^D
正常に一致するはずです。何か不足していますか?私も試し(match('$').absent? >> any.maybe).repeat(1) >> match('$')
ましたが、それは空の行と一致しません。
よろしく、
ダニエル。