Scala编程:解析器组合器与GUI开发
1. 解析器组合器
在解析器组合器中,有一个字段 lastFailure 用于记录解析过程中的最后一次失败信息。其初始值为 None ,在 Failure 类的构造函数中会对其进行更新:
var lastFailure: Option[Failure] = None
case class Failure(msg: String, in: Input) extends ParseResult[Nothing] {
if (lastFailure.isDefined && lastFailure.get.in.pos <= in.pos)
lastFailure = Some(this)
}
phrase 方法会读取 lastFailure 字段,如果解析器失败,它会发出最终的错误消息。以下是 phrase 方法在 Parsers 特质中的实现:
def phrase[T](p: Parser[T]) = new Parser[T] {
lastFailure = None
def apply(in: Input) = p(in) match {
case s @ Success(out, in1) =>
if (
Scala解析器组合器与GUI开发详解
超级会员免费看
订阅专栏 解锁全文
1213

被折叠的 条评论
为什么被折叠?



