Парсер Scala Combinator не работает с пробелами

Почему этот простой пример синтаксического анализатора комбинатора scala не работает?

def test: Parser[String] = "&lt; " ~> ident <~ " &gt;"

Когда я предоставляю следующую строку:

"&lt; a &gt;"

Я получаю такую ​​ошибку:

[1.8] failure: ` &gt;' expected but `&' found

&lt; a &gt;
       ^

Почему он спотыкается о космосе?


person ademartini    schedule 29.01.2014    source источник


Ответы (1)


Вероятно, вы используете RegexParsers. В документации можно Найди это:

Методы синтаксического анализа вызывают метод skipWhitespace (по умолчанию true) и, если true, пропускают любые пробелы перед вызовом каждого синтаксического анализатора.

Чтобы изменить это:

object MyParsers extends RegexParsers {
  override def skipWhitespace = false

  //your parsers...
}
person ghik    schedule 29.01.2014
comment
О, МОЙ БОГ, СПАСИБО! Почему это по умолчанию :( - person ademartini; 30.01.2014