如何为包括字符串在内的算术运算编写 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~")"
我正在尝试使用 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~")"