我几天前刚开始使用Scala,想写我的第一个解析器。
有问题的代码如下:
val withoutZero: Parser[List[String]] = ("1" | "2" | "3" | "4").+
val withZero: Parser[String] = "0" | withoutZero
我要解析的数字字符串可以有多个零和其他数字,但我想为它定义两个函数。
与Zero结合必须保留String(不是List [String]或其他任何东西)。目前我只解析一个零,因为(" 0")。+没有解决。
我的问题: 我如何能够将withZero Parser调整为多个零和 将它与withoutZero Parser结合起来仍然保留了Parser [String]
答案 0 :(得分:1)
我认为这适用于write(const char * data)
:
0+ | (1|2|3|4)+
它将val withZero: Parser[String] = (literal("0").+ | withoutZero) ^^ (_.mkString)
的列表从某个解析器加入到单个String