【发布时间】:2017-12-12 20:02:07
【问题描述】:
我正在开发我的第一个 scala 项目,该项目正在实现递归下降数学表达式解析器。
与任何递归下降解析器一样,我的函数(对应于我的语法过程)可以返回 Success 和要解析的其余行以及结果或失败。
为此,我在一个密封的特征中使用了两个 case 类,这样我的函数就可以返回一个类型 Result 对应于成功或失败,但我在编译和工作时遇到了麻烦。 (我在比赛中不断收到type mismatch 错误)
知道我做错了什么吗?
这是他的代码:
sealed trait Result
case class Success(expr: String, result: Int) extends Result
case object Failure extends Result
class PackratParser() {
var x: Int = 3
def pExpr(expr: String) : Result = {
return Success(32)
}
def parseExpr(expr: String) : Int = {
val p = pExpr(expr)
p match {
case Success(expr, res) => println("success!" + expr + res)
case Failure => println("failure...")
}
}
}
谢谢:)
【问题讨论】:
-
请(在涉及错误的任何个问题中)包含错误消息的完整、准确的文本——这将有助于其他人帮助您。