![]() |
YACC |
||||||||||||||||||||||||||||||
|
[ Содержание ] [ Предыдущая ] [ Следующая ] Глава 1. Основные спецификацииИмена ссылаются либо на токены, либо на нетерминальные символы. Yacc требует, чтобы имена токенов были объявлены. В добавок, по причинам, описанным в часто желательно включить лексический анализатор как часть файла спецификаций; может быть полезно включить туда также идругие программы. Таким образом, каждый файл спецификаций состоит из трех секций: объявления, (грамматические) правила, и программы. Секции разделяются символами двойного процента "%%". (Символ процента "%" в основном используется в Yacc-е как Esc-символ.) Другими словами, полный файл спецификации выглядит как: описания %% правила %% программы Секция объявлений может быть пуста. Более того, если секция программ опущена, то вторая метка "%%" также может быть опущена; таким образом, минимальная разрешенная спецификация Yacc есть: %% правила Пробелы, табуляции и новые строки игнорируются, за исключением случаев, когда они появляются в именах или многосимвольных зарезервированных словах. Секция правил построена из одного или более грамматических правил. Грамматическое правило имеет форму: A : BODY ; A представляет собой нетерминальное имя, а BODY представляет собой последовательность нуля или более имен и литералов. Двоеточие ":" и точка с запятой ";" - пунктуация Yacc-а.
По некоторым причинам технического свойства, символ NUL ('\0') не должен использоваться в грамматических правилах. A : B C D ; A : E F ; A : G ; могут быть представлены как A : B C D | E F | G ; Hеобязательно, чтобы грамматические правила с одинаковой левой частью появлялись все вместе в секции грамматических правил, хотя при этом текст проще читать и легче изменять. empty : ; Имена, представляющие токены, должны быть объявлены; проще всего это сделать, написав %token name1 name2 . . . в секции объявлений. (Смотри главы 3, 5, 6 за дополнительным обяснением). Каждое имя, не объявленное в секции объявлений, считается нетерминальным символом. Каждый нетерминальный символ должен появляться в левой части как минимум одного правила. %start keyword b`$4 b4 $lbq l`sp $jb ` ``p` Вернуть в соответсвующем месте символ конца -- дело лексического анализатора, написанного пользователем; смотри секцию 3, ниже. Обычно символ конца представляет некоторый достаточно очевидный статус ввода-вывода, такой как "конец файла" или "конец записи". [ Содержание ] [ Предыдущая ] [ Следующая ] | ||||||||||||||||||||||||||||||
|