LL(k)-грамматики, множества FIRST и FOLLOW
Наибольший интерес в построении синтаксических анализаторов (парсеров) представляют LL(1)-грамматики, так как для них возможно построение нисходящих парсеров без возврата, то есть без корректировки выбранных правил в грамматике. LL(1)-грамматики являются подмножеством КС-грамматик. Однако для достаточно большого количества формальных языков можно построить LL(1)-грамматику, например, для языка арифметических выражений и даже для некоторых языков программирования, в частности можно и для языка Java.
LL(k)-грамматика
Дадим теперь формально определение LL(k)-грамматики.
| Определение: |
| Пусть — КС-грамматика. Рассмотрим возникновение следующей ситуации во время левостороннего вывода в этой грамматике слова :
где — стартовый нетерминал грамматики, и — цепочки из терминалов, уже разобранная часть слова , — нетерминал грамматики, в которой есть правила и , — последовательности из терминалов и нетерминалов. |
TODO: LL(1)-грамматика
TODO: FIRST и FOLLOW, примеры (скобочные последовательности)
TODO: Теорема об LL(1)-грамматиках
TODO: Пара следствий
TODO: Какие-нибудь примеры