C грамматика в исходном коде GCC - PullRequest
12 голосов
/ 27 апреля 2010

Я ищу грамматику C в исходном коде GCC, точнее грамматику в форме yacc / bison.

Ответы [ 7 ]

12 голосов
/ 29 апреля 2010

Найдена грамматика C в спецификации Yacc в GCC версии 3.3 в файле "c-parse.y"

10 голосов
/ 27 апреля 2010

Вы не найдете файл грамматики yacc / bison на языке C в текущем исходном коде GCC. Это было сделано в прошлом, до форка egcs. Я не могу дать вам точную версию и местоположение, но могу сказать, что она должна быть в версии 2.x

Текущая версия GCC имеет собственный синтаксический анализатор C

7 голосов
/ 27 апреля 2010

GCC G ++ переключился с парсера на основе yacc (бизонов) несколько лет назад (вероятно, по крайней мере на 5 лет). Они начали использовать рекурсивный приличный парсер, потому что C ++ сложен в yacc.

После нескольких лет использования этого синтаксического анализатора для C ++ они переключили C на синтаксический анализ, используя также рекурсивный приличный.

Вам придется вернуться к нескольким версиям, чтобы найти грамматику в формате зубров, но она там. Вы должны попробовать поиск кода Google с

gcc yyparse

Обновление: завершение поиска кода Google в 2012 году

http://en.wikipedia.org/wiki/Google_Code_Search

Старый: http://yaxx.googlecode.com/svn/branches/yaxx-proc/gcc-3.4.0/gcc/c-parse.y

чтобы найти версию gcc, в которой она есть, и тогда вы сможете найти там исходный файл yacc / bison. Это будет старый, хотя.

7 голосов
/ 27 апреля 2010

GCC версии 4.3 не содержал явно написанной C-грамматики. Разбор и семантический анализ выполнялись одновременно, без представления синтаксического дерева в виде отдельной структуры данных.

Источник информации: я прочитал исходный код GCC.

5 голосов
/ 06 октября 2010
4 голосов
/ 27 апреля 2010

GCC не использует сгенерированный парсер; его синтаксический анализатор представляет собой рукописный анализатор с рекурсивным спуском.

0 голосов
/ 27 марта 2015

Грамматику C можно найти в комментариях в файле c-parser.c в источниках GCC. Это не як / бизон, хотя, как уже было сказано.

...