javacc игнорировать регистр локально?

Я хочу сделать часть определений JavaCC нечувствительными к регистру, но не глобально.

TOKEN [IGNORE_CASE]:
{
  < STRA : "a" >
}
TOKEN :
{
  < STRB : "b" >
}

Кажется, что выше все токены (STRA и STRB) нечувствительны к регистру. Как сделать так, чтобы игнорировался только регистр STRB?

Кроме того, могу ли я сделать следующий производственный регистр нечувствительным, например, только «b = ‹...>», так что?

private void expr() : 
{
  Token a, b;
}
{
  a = < STRA > | b = < STRB>
}

Признаюсь, я не могу понять это, прочитав руководство. Пожалуйста, помогите мне. Дайте мне знать, если я не объяснил ясно. Спасибо.


person X.M.    schedule 06.02.2012    source источник


Ответы (1)


Создайте отдельный список токенов, чувствительных к регистру и игнорируйте токены регистра, тогда вам не нужно объявлять оператор глобально как Игнорировать регистр = true. попробуйте код, как показано ниже,

TOKEN [IGNORE_CASE]: {
 < STRB : "b" >
}

TOKEN : {
  < STRA : "a" >
}
person Sandeep Wakchaure    schedule 26.09.2016