我正在尝试使用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
}
如何更改第一部分以解析数字旁边的字符串?
答案 0 :(得分:1)
我认为你应该把它添加到因子替代品中:
def factor: Parser[Any] = ident | floatingPointNumber | "("~expr~")"