30

Bon, je vais essayer d'expliquer rapidement le parsing LR, mais il n'y aura pas tous les détails:
* Tu commences avec une "grammaire". Celle-ci contient des "états", et des "tokens" qui correspondent à des mots, ou plus exactement à des catégories de mots. La grammaire décrit à quel état on passe en fonction de l'état de départ et du token lu. Par exemple, pour une phrase simple:
état "départ" + token "sujet" -> état 1
état 1 + token "verbe" -> état 2
état 2 + token "objet" -> état "fin"
Tout token qui n'est pas prévu par la grammaire sera vu comme une erreur de syntaxe ("parse error").
* En plus des passages d'état, la grammaire te dit comment interpréter les tokens. Par exemple:
"sujet": "shift" (le token ne veut rien dire tout seul, il faut en lire un autre)
"sujet"+"verbe": "shift"
"sujet"+"verbe"+"objet": "reduce" -> "phrase" (sujet+verbe+objet=phrase)
* En pratique, ces informations ne sont pas codées comme dans l'exemple ci-dessus, mais associées aux états:
état "départ": shift, "sujet" -> état 1
état 1: shift, "verbe" -> état 2
état 2: shift, "objet" -> état 3
état 3: reduce(3) -> "phrase" -> état "fin" (le 3 de reduce(3) étant le nombre de tokens à "réduire")
* La phrase "Je parse une phrase." sera donc parsée par cette grammaire comme:
état "départ": shift, Je = "sujet" -> état 1
état 1: shift, parse = "verbe" -> état 2
état 2: shift, une phrase = "objet" -> état 3
état 3: reduce(3): "sujet" + "verbe" + "objet" -> "phrase" -> état "fin"
(En pratique, "une phrase" sera lu comme "préposition" "nom commun" et devra être également réduit en un seul token "objet".)
* Èvidemment, le résultat final intéressant n'est pas juste le token "phrase", mais aussi les étapes de réduction. Ici, on sait que notre phrase est constituée du "sujet" Je, du "verbe" parse et de l'"objet" une phrase. Ici, le "parse tree" a un seul niveau. En général, c'est un arbre qui peut devenir très grand.
* En pratique, un parseur LR ne se limite pas à passer d'état en état, il exécute aussi du code quand il se trouve en certains états. Ce code fait en quelque sorte partie de la grammaire.
* Le parsing LR parse toujours de gauche à droite, d'où le nom "LR" (left-right). Cela présuppose une rangée limitée de grammaires possibles. Dans une grammaire générale, il peut y avoir des conflits entre un "shift" et un "reduce" (par exemple: "I saw the man" a un sens tout seul, mais "I saw [a man with a telescope]" a un sens différent que "[I saw a man] with a telescope". Donc il y a conflit entre un reduce de "I saw a man" ou un shift, suivi d'un reduce de "[a man with a telescope]") ou entre 2 "reduce" (situation semblable: 2 simplifications possibles, et on ne sait à priori pas laquelle choisir). Il existe une généralisation, le "generalized LR" qui consiste à résoudre ces conflits en essayant les 2 solutions jusqu'à trouver une erreur, et cela d'une manière astucieuse en temps et en vitesse (évidemment, ça ne marche bien que si la phrase n'est pas ambigüe. Si elle est ambigüe, il y a plusieurs solutions dont aucune ne porte à une erreur). (Mais ce n'est pas toujours fait de cette manière optimale. GCC fait par exemple à certains endroits du parseur C++ actuel du "generalized LR" naïf: on essaye une solution; si elle passe, on accepte, sinon on essaye la prochaine solution. Et on recalcule tout même s'il y a des calculs en commun entre les 2 solutions, ce qui n'est pas optimal.) Mais je ne rentrerai pas dans les détails du "generalized LR" parce que c'est très long à expliquer clairement. Déjà le LR simple est assez compliqué.

(J'ai travaillé sur les parseurs LR en partie pour l'université (exposé sur le "generalized LR parsing") et en partie en travaillant sur GCC (GNU Bison). Mais je ne connais quand-même pas tout jusqu'au dernier détail. smile)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

31

pour info (je doute que ca interresse qqu'un mais) le shell avance bien, G ajoute les commandes more, rm (enfin complete), cat et d'autre.
JE travaille maintenant sur la gestion des alias.
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

32

et la fonction login?
"Mi lernas Esperanto. G^i estas tre facila lingvo"
Apprenez vous aussi l'Esperanto!
Cours gratuit ici et dictionnaire

33

c peut-être pas la peine sur une TI ...
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

34

Ca c'est sûr grin
Mais ce qui est marrant c'est de faire un shell qui ressemble le plus possible à ce que l'on peut trouver sous Unix.
"Mi lernas Esperanto. G^i estas tre facila lingvo"
Apprenez vous aussi l'Esperanto!
Cours gratuit ici et dictionnaire

35

on est quand même pas à ce détail près non plus.
Car seuls les cons ne reconnaissent pas leurs erreurs.
=========================================
Avis aux newbies, avant de poster, essayez ça ->[http://databob.free.fr/IFAQ/FAQ]

Membre de la [V4pOR T34m]
EvaSDK's Homepage > et c'est reparti

36

la fonction login est en cour de perfectionnement
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

37

J'aurai besoin d'aide pour l'interpreteur shell script (g encore rien fait et je sait pas commen m'en sortir) si qqu'un pouvait m'aider et mieux... m'aider a le faire ...
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

38

PiNGoO
a écrit : rm (enfin complete)

Y compris rm -Rf / ? Ça devrait effacer tous les fichiers de la calculatrice, puis appeler FL_download pour simuler l'effaçage de / .
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

39

eu... non pas celle là mais quelques unes quand je dis completes je parle des plus elementaire (effacage de repertoire ...)
Desole, je me suis mal exprimé
Là je bosse sur les alias.
Une question, comment faire pour recupere l'exension d'un fichier ???
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

40

Tu regardes le TAG de fin

41

nan rien tongue
l'impossible n'existe pas,ce n'est que le possible qui n'est pas encore possible.

42

t'as fait la commande ls? gni
avec toutes les options bien sur triso
tu gere les pipes et redirections? grin

non je deconne mais je trouve ca marrant pke c exactement ce qu'on a fait au debut de l'annee, recoder toutes ces commandes grin
ls, cat, more, last, who, on a eu des minishell, la le prochain qu'on doit rendre (bientot d'ailleurs triso) doit gerer les pipes multiples, redirections, &, et job control (ok ca c un bonus mais bon grin) et a la fin de l'annee on a le 42sh a faire, un clone de tcsh/zsh triso
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

43

sBibi a écrit :
tu gere les pipes et redirections? grin


Bien sur, et en prime il y a la commande kill et le processus fork est geré plainement, ainssi que les recuperations de 'pere' et 'fils'
triso

on a eu des minishell, la le prochain qu'on doit rendre (bientot d'ailleurs ) doit gerer les pipes multiples, redirections, &, et job control (ok ca c un bonus mais bon ) et a la fin de l'annee on a le 42sh a faire, un clone de tcsh/zsh


je doute que tu puisse faire ça sur Ti (avec une rom d'origine)
on a eu des minishell, la le prochain qu'on doit rendre (bientot d'ailleurs )

ça doit vouloir dire que vous faites ceci en cour a la demande d'un prof, et sur P.C.
C pas trop ce que je fais
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres

44

PiNGoO a écrit :
Bien sur, et en prime il y a la commande kill et le processus fork est geré plainement, ainssi que les recuperations de 'pere' et 'fils'
triso


excellent! parle en a PpHd pour qu'il l'integre a pedrom triso
grin

je doute que tu puisse faire ça sur Ti (avec une rom d'origine)


bah g pas parle de faire ca sur ti, g juste trouve la coincidence marrante, pke c justement un des trucs qu'on doit faire smile

ça doit vouloir dire que vous faites ceci en cour a la demande d'un prof, et sur P.C. C pas trop ce que je fais


hum, a la demande d'un prof... en cours...
le prof c'est l'intra, et le cours c les pages html ou les .txt gringrin
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

45

il en est où ce shell ? (:
l'impossible n'existe pas,ce n'est que le possible qui n'est pas encore possible.

46

ben il ya qyelques commandes de deja implementé (rien d'extraordinaire pour le moment)
Là je vais essayer d'étudier les sources de Waba pour l'interpreteur grin

qwertyx>je te l'envoi des que possible
http://membres.lycos.fr/pingooz/
Un cafe et deux sucres