使用EBNF声明不区分大小写的关键字

时间:2015-10-28 15:24:31

标签: keyword case-insensitive ebnf

我想用EBNF表示法声明一个关键字,即switch

<keyword_switch> ::= "switch";

有没有办法将关键字声明为不区分大小写而不声明所有可能的字母组合?

我认为以下声明是正确的(但是,我是EBNF的新手):

<keyword_switch> ::= ("S"|"s")("W"|"w")("I"|"i")("T"|"t")("C"|"c")("H"|"h");

但它的可读性不高。还有另一种更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

<keyword_switch> ::= ("S"|"s")("W"|"w")("I"|"i")("T"|"t")("C"|"c")("H"|"h");

似乎可以使用antlr - http://www.antlr3.org/pipermail/antlr-interest/2007-August/023267.html

看似异端,我建议

<keyword_switch> ::= "switch" | "Switch" | "SWITCH";

假设sWitchsWiTcH等几乎不是用户所需要的。