如何为包括字符串在内的算术运算编写 Scala 解析器?

How to write an Scala parser for arithmetic operations including string?

我正在尝试使用 Scala Combinator-Parsing 来解析和算术运算,其中至少一个变量是字符串。我是 scala 的初学者,我喜欢它的这个特性! 例如我想解析:
(数字 + 2) * 4

它有一个很好的解析数字(带括号的浮点数和整数)的例子:

  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
       }

如何更改第一部分以解析数字旁边的字符串?

我认为你应该将它添加到替代因素中:

def factor: Parser[Any] = ident | floatingPointNumber | "("~expr~")"