S -> ε
S -> (S)S
S -> [S]S
S -> {S}S
S -> <S>S
<<<>[(())]<{[]}>>>
1112121131415351515
La construction d'un arbre binaire associé à un système de parenthèses sera abordée au cours suivant.
push
, top
, pop
et
empty
), areduire
chargée de scruter la pile, sans la modifier, en utilisant la ressource
que nous offre C++ de l'appel par valeur sur des objets-pile "directs"
(et non sur des pointeurs). En cas de succès, cette fonction renvoie le
numéro de la règle dont elle a trouvé le membre droit, en cas d'échec
elle renvoie 0. Elle fait elle-même appel à quelques fonctions de
service.reduire
, dont le
paramètre et passé par référence.axiomeSeulDanslaPile
,
dont le paramètre est appelé par valeur, ce qui laisse la voie ouverte
à des diagnostics d'erreur plus raffinés.pa1.cpp
pa.cpp
jfp$ ./pp
Donnez un mot candidat
<<<>[(())]<{[]}>>>
i = 1 carvu = < - <
i = 2 carvu = < - < <
i = 3 carvu = > - < < <
i = 3 carvu = > - S < < <
i = 4 carvu = [ - > S < < <
i = 5 carvu = ( - [ > S < < <
i = 6 carvu = ( - ( [ > S < < <
i = 7 carvu = ) - ( ( [ > S < < <
i = 7 carvu = ) - S ( ( [ > S < < <
i = 8 carvu = ) - ) S ( ( [ > S < < <
i = 8 carvu = ) - S ) S ( ( [ > S < < <
i = 8 carvu = ) - S ( [ > S < < <
i = 9 carvu = ] - ) S ( [ > S < < <
i = 9 carvu = ] - S ) S ( [ > S < < <
i = 9 carvu = ] - S [ > S < < <
i = 10 carvu = < - ] S [ > S < < <
i = 11 carvu = { - < ] S [ > S < < <
i = 12 carvu = [ - { < ] S [ > S < < <
i = 13 carvu = ] - [ { < ] S [ > S < < <
i = 13 carvu = ] - S [ { < ] S [ > S < < <
i = 14 carvu = } - ] S [ { < ] S [ > S < < <
i = 14 carvu = } - S ] S [ { < ] S [ > S < < <
i = 14 carvu = } - S { < ] S [ > S < < <
i = 15 carvu = > - } S { < ] S [ > S < < <
i = 15 carvu = > - S } S { < ] S [ > S < < <
i = 15 carvu = > - S < ] S [ > S < < <
i = 16 carvu = > - > S < ] S [ > S < < <
i = 16 carvu = > - S > S < ] S [ > S < < <
i = 16 carvu = > - S ] S [ > S < < <
i = 16 carvu = > - S > S < < <
i = 16 carvu = > - S < <
i = 17 carvu = > - > S < <
i = 17 carvu = > - S > S < <
i = 17 carvu = > - S <
i = 18 carvu = $ - > S <
i = 18 carvu = $ - S > S <
i = 18 carvu = $ - S
1112121131415351515
jfp$ ./pp
Donnez un mot candidat
(([[]{{<<>(([[]{{<<>
i = 1 carvu = ( - (
i = 2 carvu = [ - ( (
i = 3 carvu = [ - [ ( (
i = 4 carvu = ] - [ [ ( (
i = 4 carvu = ] - S [ [ ( (
i = 5 carvu = { - ] S [ [ ( (
i = 6 carvu = { - { ] S [ [ ( (
i = 7 carvu = < - { { ] S [ [ ( (
i = 8 carvu = < - < { { ] S [ [ ( (
i = 9 carvu = > - < < { { ] S [ [ ( (
i = 9 carvu = > - S < < { { ] S [ [ ( (
i = 10 carvu = ( - > S < < { { ] S [ [ ( (
i = 11 carvu = ( - ( > S < < { { ] S [ [ ( (
i = 12 carvu = [ - ( ( > S < < { { ] S [ [ ( (
i = 13 carvu = [ - [ ( ( > S < < { { ] S [ [ ( (
i = 14 carvu = ] - [ [ ( ( > S < < { { ] S [ [ ( (
i = 14 carvu = ] - S [ [ ( ( > S < < { { ] S [ [ ( (
i = 15 carvu = { - ] S [ [ ( ( > S < < { { ] S [ [ ( (
i = 16 carvu = { - { ] S [ [ ( ( > S < < { { ] S [ [ ( (
i = 17 carvu = < - { { ] S [ [ ( ( > S < < { { ] S [ [ ( (
i = 18 carvu = < - < { { ] S [ [ ( ( > S < < { { ] S [ [
( (
i = 19 carvu = > - < < { { ] S [ [ ( ( > S < < { { ]
S [ [ ( (
i = 19 carvu = > - S < < { { ] S [ [ ( ( > S < < { {
] S [ [ ( (
i = 20 carvu = $ - > S < < { { ] S [ [ ( ( > S < < {
{ ] S [ [ ( (
i = 20 carvu = $ - S > S < < { { ] S [ [ ( ( > S < <
{ { ] S [ [ ( (
i = 20 carvu = $ - S < { { ] S [ [ ( ( > S < < { { ] S [ [
( (
erreur S < { { ] S [ [ ( ( > S < < { { ] S [ [ ( (
jfp$