Con este codigo
import scala.util.parsing.combinator.JavaTokenParsers
class TestKeywords extends JavaTokenParsers {
def keywords: Parser[String] = "update"
def identifier: Parser[String] = not(keywords) ~> """[a-zA-Z0-9_$#]+""".r
def script: Parser[Any] = repsep(identifier,",")
}
object TestKeywordsApp extends TestKeywords with App {
val cmd = """updateDet,update"""
parseAll(script,
cmd.stripMargin) match {
case Success(lup, _) => println(lup)
case x => println(x)
}
}
me da error
[1.1] falla: cadena de expresiones regulares
z" expected but
u "encontradoupdateDet, actualizar
¿Como arreglarlo? updateDet no debería reconocer como palabra clave
Scala 2.10.2
Respuestas
0 para la respuesta № 1límites de palabras tal vez - Amit Joki
Para expandir, has dicho que identifier
es not(keywords)
seguido de algunos personajes. Pero updateDet
no es eso, comienza con una palabra clave. Tal vez debería declarar que una palabra clave termina con un límite de palabra (regex b
)? - Mmm