Scala Parser Combinator匹配列表中的元素

时间:2014-04-10 17:01:57

标签: scala parsing

我想要一个匹配的解析器,当且仅当解析的String包含在给定的字符串列表中时才会匹配。

def box: Parser[String] = // match if token is element of boxSyms: List[String]

即使经过数小时的网络搜索,我也不知道如何实现这一目标。 (这让我觉得我以错误的方式寻找它)。

编辑:

这只是一个更大的解析器的片段。输入将用于其他解析器组合器:

lazy val boxModal = box ~ formula  ^^ {
  case boxSym ~ formula => Box(boxSyms.get(boxSym).get, formula)
}

问题是List boxSyms在编译时是未知的。

1 个答案:

答案 0 :(得分:0)

也许这样的事情会起作用:

lazy val boxModal = box ~ formula  ^^ {
  case boxSym ~ formula if boxSyms.contains(boxSym) => 
    Box(boxSyms.get(boxSym).get, formula)
}

或其他一些更具体的条件。