如何在Android中使用scala解析器获取stackoverflower? 我使用的是这段代码:
val parseEApply: Parser[EApply] =
("EApply" ~> "(" ~> parseExpression) ~ ("," ~> parseListExpression <~ ")") ^^ {
case e ~ l => EApply(e, l)
}
通过使用不同的括号重写它,我摆脱了错误。有人能解释一下为什么吗? EApply是一个表达式,可以包含其他表达式和表达式列表。
val parseEApply: Parser[EApply] =
"EApply(" ~> parseExpression ~ ("," ~> parseListExpression <~ ")") ^^ {
case e ~ l => EApply(e, l)
}
那么为什么在第一个而不是第二个中可能会出现递归错误?
答案 0 :(得分:0)
我能够通过成对重组解析器来部分解决问题。所以而不是:
val parseExpression = p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8
我用括号写了
val parseExpression = ((p1 | p2) | (p3 | p4)) | ((p5 | p6) | (p7 | p8))
它没有任何投诉。