我在scala中有两个packrat解析器:
val symbols : PackratParser[String] =
"{" | "}" | ">"
val keywords : PackratParser[String] =
"BOOL" | "INT"
我想构建一个解析器,可以识别语句是否由这两个解析器中的一个或多个组成。我通常这样做的方式是:
val statement : PackratParser[String] =
regex( "[symbols | keywords]+".r )
但这不起作用,因为他们认为我想要实际的“符号”或“关键字”令牌......任何人都可以帮忙吗?
答案 0 :(得分:4)
你不能以这种方式使用正则表达式。然而,解析器组合器的全部意义在于它们可以组合在一起!
val statement : PackratParser[List[String]] =
rep1(symbols | keywords)