Лексический анализ - PullRequest
       4

Лексический анализ

3 голосов
/ 20 марта 2011

Моя цель - сделать очень простую и простую проверку синтаксиса Си.(Не полный компилятор, а просто базовая программа, которая принимает исходный код в качестве входного и выводит код обратно, показывая ошибки).Я хочу использовать C ++ в качестве языка для этого.

Может кто-нибудь подсказать мне написать регулярное выражение на языке 'c ++' для следующего:

  1. Назначение
  2. Для
  3. switch

Будем весьма благодарны за любые детали / предложения / рекомендации.

Ответы [ 5 ]

6 голосов
/ 20 марта 2011

Не думаю, что вы можете анализировать C только с помощью регулярных выражений. Вам нужно будет начать изучать лексеры, парсеры, грамматики и т. Д. *

Хорошая отправная точка может быть такой: Быстрый старт на грамматике синтаксического анализатора - опыт прошлого не требуется .

Вы можете найти C грамматику онлайн для yacc / lex.

3 голосов
/ 20 марта 2011

Проверка синтаксиса кода C требует намного больше, чем регулярные выражения.Вместо этого вам понадобится инструмент, который поддерживает синтаксический анализ алгебраических гамм, я бы посоветовал взглянуть на http://www.gnu.org/software/bison/, который сгенерирует «скелет» синтаксического анализатора в C ++, чтобы вы могли редактировать его и добавить код проверки синтаксиса.

2 голосов
/ 22 мая 2013

Используйте библиотеки clang.Учебник можно найти на GitHub .

1 голос
/ 20 марта 2011

Попробуйте бодрит дух

0 голосов
/ 13 мая 2014

Для распознавания операторов C лексического анализа недостаточно, поскольку лексеры работают на уровне символов. В дополнение к лексеру C вам нужен синтаксический анализатор C, который будет выполнять синтаксический анализ исходного кода. LRSTAR Parser Generator предоставляет проект C, который поможет вам начать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...