Я пытаюсь использовать Scala Combinator-Parsing для анализа и арифметической операции, в которых хотя бы одна из переменных является строкой. Я новичок в scala, и мне нравится эта особенность! Например, я хочу синтаксический анализ:
(номер + 2) * 4Как написать парсер Scala для арифметических операций, включая строку?
Она имеет хороший пример чисел синтаксических анализа (с плавающей точкой и целое число с круглыми скобками), как:
class Arith extends JavaTokenParsers {
def expr: Parser[Any] = term~rep("+"~term | "-"~term)
def term: Parser[Any] = factor~rep("*"~factor | "/"~factor)
def factor: Parser[Any] = floatingPointNumber | "("~expr~")"
}
и этой для строки:
object MyParsers extends RegexParsers {
val ident: Parser[String] = """[a-zA-Z_]\w*""".r
}
Как я могу изменить первую часть для анализа строки рядом с цифрами?
то я могу продлить «класс Arith расширяет JavaTokenParsers с RegexParsers» ??? потому что ident расширяет классы RegexParsers и Arith, о которых я упоминал выше, расширяет JavaTokenParsers, чтобы добавить идентификатор, я должен расширить класс, который есть там, например MyParsers – Rubbic
'JavaTokenParsers' уже расширяет' RegexParsers', поэтому вам не нужно комбинировать эти два. Кроме того, 'JavaTokenParsers' уже определяет' ident', поэтому вам действительно не нужны «MyParsers». – blintend