/ / "UpdateDet" no debería reconocerse como palabra clave "actualizar": expresiones regulares, análisis, análisis, combinadores de analizadores, combinadores

"UpdateDet" no debería reconocer como palabra clave "update" - regex, scala, parsing, parser-combinators, combinators

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 butu "encontrado

updateDet, actualizar

¿Como arreglarlo? updateDet no debería reconocer como palabra clave

Scala 2.10.2

Respuestas

0 para la respuesta № 1

lí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