scala - 在 Scala 中为解析器组合器创建测试

标签 scala testing parser-combinators

考虑 this在 Scala 中为术语语言实现解析器的源代码。旨在测试其功能的主要功能定义为 Ñ

def main(args: Array[String]): Unit = {
    val stdin = new java.io.BufferedReader(new java.io.InputStreamReader(System.in))
    val tokens = new lexical.Scanner(stdin.readLine())
    phrase(term)(tokens) match {
      case Success(trees, _) =>
        for (t <- path(trees))
          println(t)
        try {
          print("Big step: ")
          println(eval(trees))
        } catch {
          case TermIsStuck(t) => println("Stuck term: " + t)
        }
      case e =>
        println(e)
    }
  }

但是,我想通过在具体输入上调用 term 解析器来测试部分功能。我如何提供此输入?传递字符串不起作用...

最佳答案

只需将 stdin.readLine() 替换为您想要的输入即可,所以

phrase(term)(new lexical.Scanner("the string you want to test")) match {
  case Success(trees, _) => ...
  case err => ...
}

关于scala - 在 Scala 中为解析器组合器创建测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58061382/

相关文章:

java - 在scala中从json中提取数据

Scala 数据帧 : Explode an array

maven - QTP 到 Jenkins 集成帮助需要 CI

java - 可以在 TestNG 测试服中使用继承吗?

parsing - Trifecta 中的自定义状态

scala - 使用 Akka 的简单服务器推送广播流程

scala - 作家单子(monad)实际上与状态单子(monad)相同吗?

testing - 生成测试用例

Scala 解析器,为什么 "pat <~ pat ~> pat"不起作用?

parsing - Haskell 中的通用自下而上解析器组合器