Проблемы с Scala Parser

У меня проблемы с тестированием функциональности Scala Parser Combinator для простого Book DSL.

Во-первых, есть класс книги:

case class Book (name:String,isbn:String) {
def getNiceName():String = name+" : "+isbn
}

Далее есть простой парсер: I '

object BookParser extends StandardTokenParsers {
  lexical.reserved += ("book","has","isbn")

  def bookSpec  = "book" ~> stringLit ~> "has" ~> "isbn" ~> stringLit ^^ {
            case "book" ~ name ~ "has" ~ "isbn" ~ isbn => new Book(name,isbn) }

  def parse (s: String) = {
    val tokens = new lexical.Scanner(s)
    phrase(bookSpec)(tokens)
  }

  def test (exprString : String) = {
     parse (exprString) match {
         case Success(book) => println("Book"+book.getNiceName())
     }
  }

  def main (args: Array[String]) = {
     test ("book ABC has isbn DEF")
  }   
}

Я получаю ряд ошибок, пытаясь это скомпилировать - некоторые из них кажутся мне странными, когда я пытаюсь разобрать другие примеры в Интернете. Например, функция bookSpec выглядит практически идентично другим примерам?

Это лучший способ создать такой простой парсер?

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос