Я пытаюсь понять, как прекратить повторение слов, используя ключевое слово. Пример:
class CAQueryLanguage extends JavaTokenParsers {
def expression = ("START" ~ words ~ "END") ^^ { x =>
println("expression: " + x);
x
}
def words = rep(word) ^^ { x =>
println("words: " + x)
x
}
def word = """\w+""".r
}
Когда я выполню
val caql = new CAQueryLanguage
caql.parseAll(caql.expression, "START one two END")
Он печатает words: List(one, two, END)
, указывая, что парсер words
использовал ключевое слово END
в моих входных данных, в результате чего парсер выражений не может соответствовать. Я бы хотел, чтобы END
не совпадал с words
, что позволит expression
успешно проанализировать.