有没有人知道如何在Rascal中以不区分大小写的方式保留关键字?
由于GitHub(https://github.com/usethesource/rascal/issues/968)上报告的问题#968,我不能简单地使用单引号。这个问题可能会解决。 ince我目前正在使用一种语言,其中关键字不区分大小写,并尝试分析代码,其中有人显然随机应用了camelcase或关键字中的所有大写字母,但是,我正在寻找一种解决方法。现在我只是用三种方式定义每个关键字。由于camelcase的应用存在错误(如GroupbyGroup,本应该是camelcase中的GroupByGroup),我不得不以更多不同的方式重新定义关键字。因此,我希望有人知道更好的解决方法(或者显然可以解决这个问题)。
答案 0 :(得分:1)
自动扩展以下语法以定义'abc'
的含义
lexical CaseInsensitive = 'abc';
像这样:
lexical CaseInsensitive = 'abc';
lexical 'abc' = [aA][bB][cC];
你也可以自己做你的语法,但它不会改变消歧的语义。 \
表示法根本不会从无上下文语言中减去[aA][bB][cC]
生成的常规语言。它没有实现。
一个好的临时解决方法是保持语法不明确,并使用无赖代码过滤掉正确的树。