LR(1)-разбор — различия между версиями
Xottab (обсуждение | вклад) (→Отличия от SLR-разбора) |
|||
Строка 26: | Строка 26: | ||
!style="background-color:#EEE"| $I_9$ | !style="background-color:#EEE"| $I_9$ | ||
|- | |- | ||
− | |style="background-color:#FFF;padding:2px 30px"| | + | |style="background-color:#FFF;padding:2px 30px"| $S' \to \cdot S$ $S \to \cdot L = R$ $S \to \cdot R$ $L \to \cdot * R$ $L \to \cdot id$ $R \to \cdot L$ |
− | |style="background-color:#FFF;padding:2px 30px"| $ | + | |style="background-color:#FFF;padding:2px 30px"| $S' \to S \cdot$ |
− | |style="background-color:#FFF;padding:2px 30px"| $ | + | |style="background-color:#FFF;padding:2px 30px"| $S \to L \cdot = R$ $R \to L \cdot$ |
− | |style="background-color:#FFF;padding:2px 30px"| $ | + | |style="background-color:#FFF;padding:2px 30px"| $S \to R \cdot$ |
− | |style="background-color:#FFF;padding:2px 30px"| $ | + | |style="background-color:#FFF;padding:2px 30px"| $L \to * \cdot R$ $R \to \cdot L$ $L \to \cdot * R$ $L \to \cdot id$ |
− | |style="background-color:#FFF;padding:2px 30px"| $ | + | |style="background-color:#FFF;padding:2px 30px"| $L \to id \cdot$ |
− | |style="background-color:#FFF;padding:2px 30px"| $ | + | |style="background-color:#FFF;padding:2px 30px"| $S \to L = \cdot R$ $R \to \cdot L$ $L \to \cdot * R$ $L \to \cdot id$ |
− | |style="background-color:#FFF;padding:2px 30px"| $ | + | |style="background-color:#FFF;padding:2px 30px"| $L \to * R \cdot$ |
− | |style="background-color:#FFF;padding:2px 30px"| $ | + | |style="background-color:#FFF;padding:2px 30px"| $R \to L \cdot$ |
− | |style="background-color:#FFF;padding:2px 30px"| $ | + | |style="background-color:#FFF;padding:2px 30px"| $S \to L = R \cdot$ |
|} | |} | ||
</wikitex> | </wikitex> |
Версия 18:44, 15 июня 2015
Эта статья находится в разработке!
Отличия от SLR-разбора
<wikitex> Основным отличием LR(1)-разбора от SLR-разбора является использование предпросмотра(англ. lookahead) символов.
Приведём пример, ситуации, в которой SLR-разбор не справится с задачей:
Рассмотрим грамматику вида: $ S \to L=R | R \\ L \to *R | id \\ R \to L $
Покажем её канонический LR(0) - набор:
$I_0$ | $I_1$ | $I_2$ | $I_3$ | $I_4$ | $I_5$ | $I_6$ | $I_7$ | $I_8$ | $I_9$ |
---|---|---|---|---|---|---|---|---|---|
$S' \to \cdot S$ $S \to \cdot L = R$ $S \to \cdot R$ $L \to \cdot * R$ $L \to \cdot id$ $R \to \cdot L$ | $S' \to S \cdot$ | $S \to L \cdot = R$ $R \to L \cdot$ | $S \to R \cdot$ | $L \to * \cdot R$ $R \to \cdot L$ $L \to \cdot * R$ $L \to \cdot id$ | $L \to id \cdot$ | $S \to L = \cdot R$ $R \to \cdot L$ $L \to \cdot * R$ $L \to \cdot id$ | $L \to * R \cdot$ | $R \to L \cdot$ | $S \to L = R \cdot$ |
</wikitex>