我正在寻找一种匹配多行Parslet的方法。代码如下所示:rule(:line){(match('$').absent?>>any).repeat>>match('$')}rule(:lines){line.repeat}但是,lines将始终以无限循环结束,这是因为match('$')将无休止地重复以匹配字符串的结尾。是否可以匹配可以为空的多行?irb(main)>lines.parse($stdin.read)Thisisamultilinestring^D应该匹配成功。我错过了什么吗?我还尝试了(match('$').absent?>>any.maybe).repeat(1)>>
我正在尝试使用Parslet解析简单的缩进敏感语法Ruby中的库。以下是我尝试解析的语法示例:level0child0level0child1level1child0level1child1level2child0level1child2生成的树看起来像这样:[{:identifier=>"level0child0",:children=>[]},{:identifier=>"level0child1",:children=>[{:identifier=>"level1child0",:children=>[]},{:identifier=>"level1child1",:childr
为什么以下Parslet解析器无法解析以逗号分隔的列表?当我解析时,它卡住了并且不提供错误消息:classTestParser>str(',').maybe}rule(:names){name.repeat}root(:names)endTestParser.new.parse_with_debug('tom,samantha,ricardo')#hangshere我知道“Parsletworduntildelimeterpresent”,并且我知道如何以其他方式解析列表,但我不明白为什么上述方法不起作用。 最佳答案 解释:无限循环