LR(1)-разбор — различия между версиями
Xottab (обсуждение | вклад) (→Отличия от SLR-разбора) |
Xottab (обсуждение | вклад) (→Отличия от SLR-разбора) |
||
Строка 26: | Строка 26: | ||
!style="background-color:#EEE"| $I_9$ | !style="background-color:#EEE"| $I_9$ | ||
|- | |- | ||
− | |style="background-color:#FFF;padding:2px | + | |style="background-color:#FFF;padding:2px 15px"| |
− | |style="background-color:#FFF;padding:2px | + | $S' \to \cdot S \\ |
− | |style="background-color:#FFF;padding:2px | + | S \to \cdot L = R \\ |
− | |style="background-color:#FFF;padding:2px | + | S \to \cdot R \\ |
− | |style="background-color:#FFF;padding:2px | + | L \to \cdot * R \\ |
− | |style="background-color:#FFF;padding:2px | + | L \to \cdot id \\ |
− | |style="background-color:#FFF;padding:2px | + | R \to \cdot L$ |
− | |style="background-color:#FFF;padding:2px | + | |style="background-color:#FFF;padding:2px 15px"| |
− | |style="background-color:#FFF;padding:2px | + | $S' \to S \cdot$ |
− | |style="background-color:#FFF;padding:2px | + | |style="background-color:#FFF;padding:2px 15px"| |
+ | $S \to L \cdot = R \\ | ||
+ | R \to L \cdot$ | ||
+ | |style="background-color:#FFF;padding:2px 15px"| | ||
+ | $S \to R \cdot$ | ||
+ | |style="background-color:#FFF;padding:2px 15px"| | ||
+ | $L \to * \cdot R \\ | ||
+ | R \to \cdot L \\ | ||
+ | L \to \cdot * R \\ | ||
+ | L \to \cdot id$ | ||
+ | |style="background-color:#FFF;padding:2px 15px"| | ||
+ | $L \to id \cdot$ | ||
+ | |style="background-color:#FFF;padding:2px 15px"| | ||
+ | $S \to L = \cdot R \\ | ||
+ | R \to \cdot L \\ | ||
+ | L \to \cdot * R \\ | ||
+ | L \to \cdot id$ | ||
+ | |style="background-color:#FFF;padding:2px 15px"| | ||
+ | $L \to * R \cdot$ | ||
+ | |style="background-color:#FFF;padding:2px 15px"| | ||
+ | $R \to L \cdot$ | ||
+ | |style="background-color:#FFF;padding:2px 15px"| | ||
+ | $S \to L = R \cdot$ | ||
|} | |} | ||
</wikitex> | </wikitex> |
Версия 18:52, 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>