2015-03-06 3 views
0

Я пытаюсь оборачивать голову тем, как обрабатывать многострочные комментарии C-стиля (/ * * /) с помощью парсинга рекурсивного спуска. Поскольку эти комментарии могут появляться в любом месте, как вы их учитываете? Например, предположим, что вы разбираете предложение в токенах word, что нам делать, если есть комментарий внутри слова?Многострочные комментарии в парсере рекурсивного спуска

Ex.

Это предложение = wordwordwordword

против

Это сеном/* sible */Tence = ???

Спасибо!

+0

Вы сначала пишете лексер/токенизатор? Вы можете просто игнорировать что-либо между '/ *' и '* /' при разбиении текста программы на токены. – eigenchris

ответ

1

В C, как и все другие языки программирования, комментарий - это просто пробел; комментарий не может произойти в пределах токен.

Таким образом, комментарии не могут прерывать разбор маркера, и поэтому их нужно распознавать и игнорировать.

+0

Итак, если я хочу продолжать отслеживать комментарии и где они находятся в тексте, должен ли я сделать два прохода через текст? Один игнорирует комментарии, а другой только ищет комментарии? –

+0

@JohnWonderick Вы можете оставить отдельный список комментариев без второго прохода. Но комментарии действительно не имеют отношения к разбору. Если вы пытаетесь создать симпатичный принтер или какой-либо другой, вы можете создать связанный список/вектор токенов, как вы tokenize, но сделать сам синтаксис только со значимыми токенами. – rici

+0

Спасибо, это имеет смысл. –

 Смежные вопросы

  • Нет связанных вопросов^_^