x+y+z*2
dans la
grammaire à précédences (forme de base) :E -> E+T -> E+T+T -> T+T+T -> F+T+T ->
x+T+T
->
x+F+T -> x+y+T -> x+y+T*F
-> x+y+F*F -> x+y+z*F -> x+y+z*2
ε, ε, ε, ε, ε,
x+, x+, x+y+, x+y+; x+y+, x+y+z*, x+y+z*2
E, E+T, E+T+T, T+T+T, F+T+T, T+T, F+T, T, T*F,
F*F, F, ε
/
" :ε/E -> ε/E+T
-> ε/E+T+T -> ε/T+T+T
-> ε/F+T+T -> x+/T+T
-> x+/F+T -> x+y+/T -> x+y+/T*F
-> x+y+/F*F -> x+y+z*/F -> x+y+z*2/ε
x+y+z*2
dans la
même grammaire :E -> E+T -> E+T*F -> E+T*2 -> E+F*2 ->
E+z*2 -> E+T+z*2
-> E+F+z*2 -> E+y+z*2 -> T+y+z*2
-> F+y+z*2 -> x+y+z*2
E -> E+T/ε -> E+T*F/ε
-> E+T/*2 -> E+F/*2 -> E/+z*2 -> E+T/+z*2 -> E+F/+z*2
-> E/+y+z*2
-> T/+y+z*2
-> F/+y+z*2 -> ε/x+y+z*2
x+y+z*2 , +y+z*2
, +z*2 , *2 , ε
,
correspond à la lecture de gauche à droite du mot
analysé :ε , F
, T , E , E+F , E+T , E , E+F , E+T
, E+T*F , E+T , E
ε , F
, >T , E , F+E , T+E
, E , F+E , T+E , F*T+E
, T+E , E
A
],
l'automate choisit (en principe, de manière non-déterministe)A
. ε/E -> ε/E+T
-> ε/E+T+T -> ε/T+T+T
-> ε/F+T+T -> x+/T+T
-> x+/F+T -> x+y+/T -> x+y+/T*F
-> x+y+/F*F -> x+y+z*/F -> x+y+z*2/ε
vue comme calcul de l'analyseur descendant canonique
Partie du mot d'entrée restant à lire |
Contenu de la pile |
Règle appliquée |
x+y+z*2 |
E |
E -> E+T |
x+y+z*2 |
|
E -> E+T |
x+y+z*2 |
E+T+T |
E -> T |
x+y+z*2 |
T+T+T |
T -> F |
x+y+z*2 |
|
F -> x |
x+y+z*2 |
|
|
+y+z*2 |
+T+T |
|
y+z*2 |
T+T |
T -> F |
y+z*2 |
F+T |
F -> y |
y+z*2 |
y+T |
|
+z*2 |
+T |
|
z*2 |
T |
T -> T*F |
z*2 |
T*F |
T -> F |
z*2 |
F*F |
F -> z |
z*2 |
z*F |
|
*2 |
*F |
|
2 |
F |
F -> 2 |
2 |
2 |
|
ε |
ε |
E -> E+T
-> E+T+T -> E+T+T+T
...A -> B -> C...-> A
.E -> E+T/ε -> E+T*F/ε
-> E+T/*2 -> E+F/*2 -> E/+z*2 -> E+T/+z*2 -> E+F/+z*2
-> E/+y+z*2
-> T/+y+z*2
-> F/+y+z*2 -> ε/x+y+z*2
Partie du mot d'entrée restant à lire |
Contenu de la pile |
Règle réduite |
x+y+z*2 |
ε |
|
+y+z*2 |
x |
F -> x |
+y+z*2 |
F |
T -> F |
+y+z*2 |
T |
E -> T |
+y+z*2 |
E |
|
y+z*2 |
+E |
|
+z*2 |
y+E |
F -> y |
+z*2 |
F+E |
T -> F |
+z*2 |
T+E |
E -> E+T |
+z*2 |
E |
|
z*2 |
+E |
|
*2 |
z+E |
F -> z |
*2 |
F+E |
T -> F |
*2 |
T+E |
|
2 |
*T+E |
|
ε |
2*T+E |
F -> 2 |
ε |
F*T+E |
T -> T*F |
ε |
T+E |
E -> E+T |
ε |
E |
(4, 2, ??)
] et on choisit un moyen d'y
parvenir,(3, 1, ??)
et (3,
2, ??)
].x+y+z*2
",
lu comme la construction d'un arbre de preuve,
E + T
----------
E
E + T
-----
E
+ T
------------
E
T
---
E
+ T
-----
E + T
------------
E
F
---
T
---
E + T
-----
E + T
------------
E
x
---
F
---
T
---
E + T
-----
E + T
------------
E
x
---
F
---
T F
--- ---
E + T
-----
E + T
------------
E
x
---
F y
--- ---
T F
--- ---
E + T
-----
E + T
------------
E
x
---
F y
--- ---
T F
--- ---
E + T T * F
----- -----
E + T
---------------
E
x
---
F y
--- ---
T F F
--- --- ---
E + T T * F
----- -----
E + T
---------------
E
x
---
F y z
--- --- ---
T F F
--- --- ---
E + T T * F
----- -----
E + T
---------------
E
x
---
F y z
--- --- ---
T F F 2
--- --- --- ---
E + T T * F
----- -----
E + T
---------------
E
x+y+z*2
",
lu comme la construction d'un arbre de preuve,
x
---
F
x
---
F
---
T
x
---
F
---
T
---
E
x
---
F y
--- ---
T F
---
E
x
---
F y
--- ---
T F
--- ---
E T
x
---
F y
--- ---
T F
--- ---
E +
T
---------
E
x
---
F y z
--- --- ---
T F F
--- ---
E + T
---------
E
x
---
F y z
--- --- ---
T F F
--- --- ---
E + T T
---------
E
x
---
F y z
--- --- ---
T F F 2
--- --- --- ---
E + T
T F
---------
E
x
---
F y z
--- --- ---
T F F 2
--- --- --- ---
E + T T * F
--------- --------
E T
x
---
F y z
--- --- ---
T F F 2
--- --- --- ---
E + T
T * F
--------- --------
E + T
-------------
E
Partie du mot d'entrée restant à lire |
Contenu de la pile |
Règle appliquée |
++xy*z2 |
S |
S -> +SS |
++xy*z2 |
+SS |
|
+xy*z2 |
SS |
S -> +SS |
+xy*z2 |
+SSS |
|
xy*z2 |
SSS |
S -> x |
xy*z2 |
|
|
y*z2 |
SS |
S -> y |
y*z2 |
yS |
|
*z2 |
S |
S -> *SS |
*z2 |
*SS |
|
z2 |
SS |
S -> z |
z2 |
zS |
|
2 |
S
|
S -> 2 |
2 |
2 |
|
ε |
ε |
Partie du mot d'entrée restant à lire |
Contenu de la pile |
Règle réduite |
xy+z2*+ |
ε |
|
y+z2*+ |
x |
S -> x |
y+z2*+ |
S |
|
+z2*+ |
yS |
S -> y |
+z2*+ |
SS |
|
z2*+ |
+SS |
S -> SS+ |
z2*+ |
S |
|
2*+ |
zS |
S -> z |
2*+ |
SS |
|
*+ |
2SS |
S -> 2 |
*+ |
SSS |
|
+ |
*SSS |
S -> SS* |
+ |
SS |
|
ε |
+SS
|
S -> SS+ |
ε |
S |
A
puisse se dériver
en Aw
A
lui-même, est rebelle
à l'analyse descendante déterministe.Partie du mot d'entrée restant à lire |
Contenu de la pile |
Règle réduite |
++xy*z2 |
ε |
|
+xy*z2 |
+ |
|
xy*z2 |
+ + |
|
y*z2 |
x++ |
S -> x |
y*z2 |
S++ |
|
*z2 |
yS++ |
S -> y |
*z2 |
SS++ |
S -> +SS |
*z2 |
S+ |
|
z2 |
*S+ |
|
2 |
z*S+ |
S -> z |
2 |
S*S+ |
|
ε |
2S*S+ |
S -> 2 |
ε |
SS*S+ |
S -> *SS |
ε |
SS+ |
S -> +SS |
ε |
S |
S -> +SS
" <==> "S -> SS+
"
etc, xy+z2*+
"
comme attendu.