LR(1)-разбор — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Отличия от SLR-разбора)
(Отличия от SLR-разбора)
Строка 26: Строка 26:
 
!style="background-color:#EEE"| $I_9$
 
!style="background-color:#EEE"| $I_9$
 
|-
 
|-
|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 15px"|  
|style="background-color:#FFF;padding:2px 30px"| $S' \to S \cdot$
+
$S' \to \cdot S \\
|style="background-color:#FFF;padding:2px 30px"| $S \to L \cdot = R$ $R \to L \cdot$
+
S \to \cdot L = R \\
|style="background-color:#FFF;padding:2px 30px"| $S \to R \cdot$
+
S \to \cdot R \\
|style="background-color:#FFF;padding:2px 30px"| $L \to * \cdot R$ $R \to \cdot L$ $L \to \cdot * R$ $L \to \cdot id$
+
L \to \cdot * R \\
|style="background-color:#FFF;padding:2px 30px"| $L \to id \cdot$
+
L \to \cdot id \\
|style="background-color:#FFF;padding:2px 30px"| $S \to L = \cdot R$ $R \to \cdot L$ $L \to \cdot * R$ $L \to \cdot id$
+
R \to \cdot L$
|style="background-color:#FFF;padding:2px 30px"| $L \to * R \cdot$
+
|style="background-color:#FFF;padding:2px 15px"|  
|style="background-color:#FFF;padding:2px 30px"| $R \to L \cdot$
+
$S' \to S \cdot$
|style="background-color:#FFF;padding:2px 30px"| $S \to L = R \cdot$
+
|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>