Problemas do analisador do Scala
Estou tendo problemas para testar a funcionalidade do Scala Parser Combinator para um DSL de livro simples.
Em primeiro lugar, há uma aula de livros:
case class Book (name:String,isbn:String) {
def getNiceName():String = name+" : "+isbn
}
Em seguida, há o analisador simples:
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")
}
}
Estou recebendo uma série de erros tentando compilar isso - alguns que me parecem estranhos ao tentar desconstruir os outros exemplos na internet. Por exemplo, a função bookSpec aparece quase idêntica aos outros exemplos?
Esta é a melhor maneira de construir um analisador simples como este?
obrigado