Scala ---在解析器中使用“[”“]”时出错

时间:2012-09-28 15:07:57

标签: parsing scala

这是我的解析器

def assstm: Parser[Any] = indexop ~ ":=" ~ expression ~ ";"
def indexop: Parser[Any] = ident ~ "[" ~ expression ~ "]"

myArray [5]出错:= 5

``('' expected but `[' found

但是使用这个解析器

def assstm: Parser[Any] = indexop ~ ":=" ~ expression ~ ";"
def indexop: Parser[Any] = "[" ~ expression ~ "]"

我用[5]测试:= 5,没有错误。

发生了什么事?

1 个答案:

答案 0 :(得分:1)

我们需要更多的语法来完全回答你的问题。但是,它看起来像是一个回溯问题:您可能已经定义了一个规则来测试多个备选方案,每个方案都使用ident:其中ident必须跟随parens,以及assstm规则。

使用ident和parens的规则可能会引发error(而不是failure),从而中止解析器的运行。