Scala Parser,设置保留字

时间:2013-10-30 19:38:26

标签: parsing scala

我正在用scala解析器编写一个简单的编程语言。到目前为止没有问题,但我担心函数名 / 变量名保留字的关系。

我已经添加了一些特殊功能,如"floor" ~ gexp"top" ~ gexp,我不希望任何使用此语言的人能够命名一个函数或类似的变量。我还没有找到一种检查方法。

在Ruby中我会写类似

的东西
rule varname
    lowerid &{ |id| id[0].is_not_reserved } <VarNameNode>

但我不知道如何在scala中写这个

def varName : Parser[StringValue] = lowerid

1 个答案:

答案 0 :(得分:1)

您可以使用^?运算符:

def varName: Parser[StringValue] = lowerid ^? ({
  case id if !isReserved(id) => id
}, { id => s"Error: $id is reserved." })