我正在用 scala 解析器编写一种简单的编程语言。到目前为止没有问题,但我担心关系函数名/变量名与保留字的关系。
我已经添加了一些特殊的函数,比如"floor" ~ gexp
or"top" ~ gexp
并且我不希望任何使用这种语言的人能够命名一个函数或一个变量,比如它们。我还没有找到检查这个的方法。
在Ruby中我会写类似
rule varname
lowerid &{ |id| id[0].is_not_reserved } <VarNameNode>
但我不知道如何在 scala 中写这个
def varName : Parser[StringValue] = lowerid