Парсер в JavaCC и инструкция SKIP - PullRequest
0 голосов
/ 05 октября 2010

Я использую JavaCC для создания сложного парсера. В какой-то момент я хотел бы пропустить все символы, которые я вижу, до нужного токена в моей грамматике ... давайте возьмем, например, следующий

/ * бла бла бла бла бла бла бла бла бла * / => Я хотел бы определить такую ​​грамматику, как

<OPEN_COMMENT> SKIP ~[] until <CLOSE_COMMENT> Я хочу, чтобы это было правдой, даже если "bla" - обычный токен

Спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 07 октября 2010

Я думаю, что обычной процедурой здесь является использование лексических состояний с MORE и SKIP или SPECIAL_TOKEN. Пример этого можно увидеть в том, как обрабатываются комментарии с помощью грамматики Java, поставляемой с исходным кодом JavaCC .

0 голосов
/ 05 октября 2010

Вы можете сделать это с помощью регулярных выражений.

Вы можете определить токены и правило следующим образом:

TOKEN :
{
< #DIGIT : [ "0"-"9" ] >
| < #ALPHABET: ["a" - "z"] >
| < #CAPSALPHABET: ["A" - "Z"] >
| < WORD: ( <DIGIT> | <ALPHABET> | <CAPSALPHABET>)+ >
}

String comment() :
{
  Token token;
}
{
 token=( <WORD> )+
 {
   return token.toString();
 }
}
...