我只是想解析以下字符串直到END
令牌则忽略其他的:使用解析器组合丢弃剩余输入
val input = """
0)
blah1
blah2
blah3
1)
blah4
blah5
END
blah6
"""
使用
object Pars extends RegexParsers {
def strings: Parser[List[String]] = rep(str) <~ end
def str: Parser[String] = ".*".r
def end: Parser[String] = "END" <~ rep(".*".r)
}
Pars.parseAll(Pars.strings, input)
进入一个无限循环和OutOfMemoryError异常。我做错了什么,以及如何解决这个问题?
谢谢,这很有用。我已经拼凑在一起的东西,使用这个和senia的优秀答案我的另一个问题http://stackoverflow.com/a/11113833/770361 –
谢谢丹尼尔,你更新的答案是伟大的!我认为应该有一些方法来自动处理行结束,但不知道如何。 –
我发现这个问题:如果'END'令牌不存在,而不是解析失败,我们得到一个堆栈溢出。有任何想法吗? –