Создание синтаксического анализатора с помощью программы yacc

Программа yacc создает синтаксические анализаторы, которые определяют и контролируют структуру текстового ввода компьютерной программы.

Для работы с этой программой необходимо определить следующий элементы:
файл грамматики
Исходный файл, содержащий спецификации распознаваемого языка. В этом файле также находятся определения функций main, yyerror и yylex. Это обязательные функции.
main
Функция языка C, которая, как минимум, вызывает функцию yyparse, созданную программой yacc. Ограниченная версия этой функции присутствует в библиотеке yacc.
yyerror
Функция языка C, предназначенная для обработки ошибок, возникающих при работе синтаксического анализатора. Ограниченная версия этой функции присутствует в библиотеке yacc.
yylex
Функция языка C, выполняющая лексический анализ входного потока и передающая лексемы синтаксическому анализатору. Лексический анализатор можно создать с помощью команды lex.

На основе файла спецификаций программа yacc создает файл y.tab.c на языке C. После компиляции файла командой cc формируется код функции yyparse, возвращающей целое число. При работе функция yyparse вызывает для чтения лексем функцию yylex. Функция yylex возвращает лексемы до тех пор, пока синтаксический анализатор не обнаружит ошибку или yylex не вернет маркер конца, означающий завершение входного потока. При возникновении неустранимой ошибки функция yyparse возвращает в функцию main значение 1. При обнаружении маркера конца функция yyparse возвращает в функцию main значение 0.