Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我已经使用scala.util.parsing.combinators.Parsers. 我的作品中至少有一个错误,但我有太多的错误,以至于很难通过眼球来确定问题。
scala.util.parsing.combinators.Parsers
我需要的是我的解析器每次尝试将输入与任何产品匹配的日志;在实例化所有成功和失败对象时记录它们会很可爱。不幸的是,我能看到的唯一方法是扩展库提供的许多基本类,然后重写我的大型解析器来扩展新类。
有没有一种简单的方法来获得这种日志记录行为?
您可以使用log组合器来包装语法的产生。这是 中的定义Parsers.scala:
log
Parsers.scala
def log[T](p: => Parser[T])(name: String): Parser[T] = Parser{ in => println("trying "+ name +" at "+ in) val r = p(in) println(name +" --> "+ r) r }
否则,我认为您应该能够覆盖successand failure,但这将提供相当多的信息,因为您不知道生产调用它们的内容。
success
failure