Комментарии 11
А почему взяли именно встроенную в скала библиотеку, а не сторонние парсеры? Parboiled2 или FastParse например.
Не обязательно покупать второе издание Programming in Scala, чтоб почитать про парсеры — в первом почти то же самое, но доступно совершенно свободно. Programming in Scala/Combinator Parsing
Вызывать методы _N вручную все-таки не стоит. Предполагается их использовать следующим образом:
Вместо PackratParser можно использовать rep1, слегка усложнив метод binOperation.
Вызывать методы _N вручную все-таки не стоит. Предполагается их использовать следующим образом:
private def binOperation(p: Expression ~ String ~ Expression) = p match {
case e1 ~ op ~ e2 => BinOperation(e1, BinOperator(op), e2)
}
Вместо PackratParser можно использовать rep1, слегка усложнив метод binOperation.
Чем не угодил antlr парсер? У них там из папки примеров можно готовые грамматики взять.
Для сравнения:
длинный пример на java
короткий, но непонятный пример на C#
Ну так нечестно. Взяли бы parboiled, и получили бы на java почти такой же, хотя возможно и не такой красивый парсер. С теми же достоинствами (и недостатками).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Scala: parser combinators на примере парсера формул