在Scala中使用packrat解析器构建正则表达式

时间:2010-12-02 04:54:13

标签: regex parsing scala

我在scala中有两个packrat解析器:

val symbols : PackratParser[String] =
    "{" | "}" | ">"

val keywords : PackratParser[String] =
    "BOOL" | "INT"

我想构建一个解析器,可以识别语句是否由这两个解析器中的一个或多个组成。我通常这样做的方式是:

val statement : PackratParser[String] =
    regex( "[symbols | keywords]+".r )

但这不起作用,因为他们认为我想要实际的“符号”或“关键字”令牌......任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

你不能以这种方式使用正则表达式。然而,解析器组合器的全部意义在于它们可以组合在一起!

val statement : PackratParser[List[String]] =
    rep1(symbols | keywords)