Определяет операцию, которую необходимо выполнить, когда вычисляется левое выражение.
Например, у нас есть такой код:
def symbol: Parser[Any] = "+" | "-" | "*"
def number: Parser[Int] = """(0|[1-9]\d*)""".r ^^ {string => string.toInt }
def expression = {
number ~ symbol ~ number ^^ { case firstOperand ~ operator ~ secondOperand =>
firstOperand + secondOperand
}
}
Итак, здесь в число мы конвертируем String в Int. Это означает, что когда мы будем использовать наш синтаксический анализатор следующим образом:
parse(expression, "3 + 2")
Он вернет нам 5, если мы не преобразуем его и не оставим как строки, мы получим «32».