Так что у меня проблема с javacc и пропуском комментариев. У меня есть многострочный комментарий, который может содержать несколько комментариев внутри себя (комментарий - это все, что появляется в пределах /*
и */
), я также использую этот сегмент кода <"//" (~["\n"])* "\n">
, чтобы пропустить однострочный комментарий. Оба функционируют независимо друг от друга, но при объединении однострочный комментарий нарушает мой многострочный комментарий.
Парсер больше не распознает многострочный комментарий, а анализирует его как комбинацию OTHER (/*
), ID и т. Д.
Ниже приведен код пропуска многострочного комментария и однострочного комментария:
SKIP:
{
"/*" {commentnesting++;} : IN_COMMENT
}
<IN_COMMENT> SKIP :
{
"/*" {commentnesting++;}
| "*/" {commentnesting--;
if(commentnesting == 0) {
SwitchTo(DEFAULT);
}
}
| <~[]>
}
SKIP :
{
<"//" (~["\n"])* "\n">
}
Мои вопросы:
- Как однострочный комментарий может привести к разрыву многострочного комментария, когда они, на мой взгляд, имеют совершенно разные регулярные выражения?
- Является ли способ написания пропуска однострочного комментария, чтобы он выполнял ту же функцию, что и раньше, но не прерывал многострочный комментарий, когда они используются вместе?