По умолчанию парсеры, полученные из RegexParsers
, пропускают пробелы перед попыткой сопоставления с любым символом терминала. Если ваша интерпретация пробелов не является необычной, вы можете просто работать с этим. Если конкретный символ (последовательности), который вы хотите рассматривать как пропущенный пробел, отличается от значения по умолчанию (\s+
), вы можете переопределить проецируемое значение val whiteSpace: Regex = ...
в вашем анализаторе RegexParsers
. Если вы не делаете никаких пропусков, override def skipWhitespace = false
.
Редактировать: Так что да, изменив это:
repsep("""\d+""".r,"""\s+""".r)
к этому:
rep("""\d+""".r)
и оставляя все остальное, определенное в RegexParsers
без изменений, следует делать то, что вы хотите.
Кстати, обычное использование repsep
предназначено для таких вещей, как списки, разделенные запятыми, в которых нужно убедиться, что запятые есть, но не нужно хранить их в результирующем дереве анализа (или AST). 1020 *