由于这是我的第一篇文章,我想借此机会说:这是一个多么伟大的网站!
无论如何,对于这个问题:
我有点像Scala新手,我正在尝试用Scala中的解析器组合器解决数据提取和解析问题,我得到了java.lang.StackOverflowError异常.
我的真实世界的例子太大了,所以我没有重复使用来自另一个SO问题的代码同样的问题.虽然代码略有修改.我尝试使用PackratParsers解决问题,但没有成功.
import scala.util.parsing.combinator.syntactical.StandardTokenParsers
import scala.util.parsing.combinator.PackratParsers
object ArithmeticParser1 extends StandardTokenParsers with PackratParsers {
lexical.delimiters ++= List("(", ")", "+", "-", "*", "/")
lazy val reduceList: Int ~ List[String ~ Int] => Int = {
case i ~ ps => (i /: ps)(reduce)
}
def reduce(x: Int, r: String ~ Int) = (r: @unchecked) match {
case "+" ~ y => x + y
case "-" ~ y => x - y
case "*" ~ y => x …
Run Code Online (Sandbox Code Playgroud) stack-overflow parsing scala text-parsing parser-combinators