Изменения

Перейти к: навигация, поиск

Построение FIRST и FOLLOW

2403 байта добавлено, 23:08, 28 июня 2014
Пример
=== Конструирование FIRST для арифметических выражений ===
Рассмотрим, как будет выглядеть множество <tex> \mathrm{FIRST} </tex> после очередной итераций цикла <tex> \mathrm{while} </tex>.
 
'''После 1ой итерации:'''
{| style="background-color:#CCC;margin:0.5px"
!style="background-color:#EEE"| Правило
!style="background-color:#EEE"| FIRST
!style="background-color:#EEE"| FOLLOW
|-
|style="background-color:#FFF;padding:2px 30px"| <tex>AE</tex>|style="background-color:#FFF;padding:2px 30px50px"| <tex>\{\ (,\ \varepsilon\ \} </tex>|style="background-color:#FFF;padding:2px 40px"| <tex>\{\ ),\ \$\ \} </tex>
|-
|style="background-color:#FFF;padding:2px 30px"| <tex>BE'</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ +,\ \varepsilon\ \} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>T</tex>|style="background-color:#FFF;padding:2px 50px"| <tex>\{\ \}</tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>T'</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ \times,\ \varepsilon\ \} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>F</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ n,\ (\ \} </tex>|}'''После 2ой итерации:''' {| style="background-color:#CCC;margin:0.5px"!style="background-color:#EEE"| Правило!style="background-color:#EEE"| FIRST|-|style="background-color:#FFF;padding:2px 30px"| <tex>E</tex>|style="background-color:#FFF;padding:2px 50px"| <tex>\{\ \} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>E'</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ +,\ \varepsilon\ \} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>T</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ n,\ (\ \} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>T'</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ \times,\ \varepsilon\ \} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>F</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ n,\ )(\ \} </tex>|}'''После 3eй итерации:''' {| style="background-color:#CCC;margin:0.5px"!style="background-color:#EEE"| Правило!style="background-color:#EEE"| FIRST|-|style="background-color:#FFF;padding:2px 30px"| <tex>E</tex>|style="background-color:#FFF;padding:2px 50px"| <tex>\{\ n,\ (\$\} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>E'</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ +,\ \varepsilon\ \} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>T</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ n,\ (\ \} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>T'</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ \times,\ \varepsilon\ \} </tex>|-|style="background-color:#FFF;padding:2px 30px"| <tex>F</tex>|style="background-color:#FFF;padding:2px 30px"| <tex>\{\ n,\ (\ \} </tex>
|}
Далее никаких изменений происходить не будет, и на этом алгоритм завершит свою работу.
=== Конструирование FOLLOW для арифметических выражений ===
 
== См. также ==
* [[LL(k)-грамматики, множества FIRST и FOLLOW]]

Навигация