user1868607
user1868607

Reputation: 2600

Create tests for parser combinators in Scala

Consider this source code that implements a parser for a term language in Scala. The main function, designed to test its functionality is defined asÑ

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)
    }
  }

However, I want to test part of the functionality by calling the term parser on concrete input. How can I provide this input? Passing a string does not work...

Upvotes: 1

Views: 32

Answers (1)

Alexey Romanov
Alexey Romanov

Reputation: 170745

Just replace stdin.readLine() with your desired input, so

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

Upvotes: 1

Related Questions