Проблемы с 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 выглядит практически идентично другим примерам?
Это лучший способ создать такой простой парсер?
Спасибо