С помощью этого кода"updateDet" не должен признавать ключевое слово "обновление"
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)
}
}
я получаю ошибку
[1.1] отказ: строку, соответствующую регулярное выражение
\z' expected but
и»найденоupdateDet, обновление
Как это исправить? updateDet не должны признавать ключевое слово
2.10.2
Скала
Word границ возможно –
Чтобы расширить, вы сказали, что 'identifier' is' not (keywords) ', за которым следуют некоторые символы. Но 'updateDet' не так - он начинается с ключевого слова. Возможно, вам следует объявить, что ключевое слово заканчивается границей слова (regex '\ b')? – lmm
'\ b' помог, thx – user1043173