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

时间:2015-06-10 05:31:39

标签: scala parsing arithmetic-expressions

我正在尝试使用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
       }

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

1 个答案:

答案 0 :(得分:1)

我认为你应该把它添加到因子替代品中:

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