 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Sylvain Guest
|
Posted: Sun Aug 06, 2006 4:37 pm Post subject: parser de grammaire |
|
|
je cherche (aussi) un lexer pour parser des flux proposant leur propre
grammaire (déclaration de fonctions, opérateurs arithmétiques a-la-C,
valeurs immédiates).
le but est de construire une représentation des fonctions déclarées
(arbre ou autre ce n'est pas le point) et de parser des expressions pour
générer un flux texte qui sera l'expansion de ces expressions lues.
je suis parti d'un lexer self-made mais il existe sûrement des projets
avancés, merci pour toute piste.
Sylvain. |
|
| Back to top |
|
 |
Etienne Guest
|
Posted: Wed Aug 09, 2006 9:11 am Post subject: Re: parser de grammaire |
|
|
Bonjour,
| Quote: | je cherche (aussi) un lexer pour parser des flux proposant leur propre
grammaire (déclaration de fonctions, opérateurs arithmétiques a-la-C,
valeurs immédiates).
|
Tu as lex/Yacc et leur equivalent GNU :
- flex --> http://www.gnu.org/software/flex/
- bison --> http://www.gnu.org/software/bison/
C'est plus adapté au c mais cela fonctione "bien" avec du c++.
Sinon tu as spirit (http://boost.org/libs/spirit/index.html), une lib
de boost. La c'est pur du c++ avec je crois du mpl.
Etienne |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Wed Aug 09, 2006 3:34 pm Post subject: Re: parser de grammaire |
|
|
Etienne wrote on 09/08/2006 10:01:
merci Etienne pour cette réponse.
j'avais déjà regardé une distrib. de LEX, l' "inconvénient" dans mon cas
est que je ne souhaite pas (ne peux pas) générer un source C/C++ pour
une grammaire donnée mais plutôt construire dynamiquement les
expressions (principalement des fonctions simples) présentes dans mon
input file.
je suis parti pour l'implémentation actuelle d'un préprocesseur,
l'analyse syntaxique est OK mais l'analyse lexicale est absente, je suis
donc parti à coder un truc à générer des fonctions sous forme de btree
et c'est là que j'ai l'impression de réinventer l'eau tiède.
s'il n'y a pas mieux que lex/bison, je referais une passe sur leur
distrib. pour en extraire le lexer.
Sylvain. |
|
| Back to top |
|
 |
Laurent Deniau Guest
|
Posted: Wed Aug 09, 2006 5:48 pm Post subject: Re: parser de grammaire |
|
|
Sylvain wrote:
| Quote: | Etienne wrote on 09/08/2006 10:01:
je cherche (aussi) un lexer pour parser des flux proposant leur propre
grammaire (déclaration de fonctions, opérateurs arithmétiques a-la-C,
valeurs immédiates).
Tu as lex/Yacc et leur equivalent GNU :
- flex --> http://www.gnu.org/software/flex/
- bison --> http://www.gnu.org/software/bison/
merci Etienne pour cette réponse.
j'avais déjà regardé une distrib. de LEX, l' "inconvénient" dans mon cas
est que je ne souhaite pas (ne peux pas) générer un source C/C++ pour
une grammaire donnée mais plutôt construire dynamiquement les
expressions (principalement des fonctions simples) présentes dans mon
input file.
je suis parti pour l'implémentation actuelle d'un préprocesseur,
l'analyse syntaxique est OK mais l'analyse lexicale est absente,
|
m'est avis que c'est l'inverse.
a+, ld. |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Wed Aug 09, 2006 7:38 pm Post subject: Re: parser de grammaire |
|
|
Laurent Deniau wrote on 09/08/2006 14:48:
| Quote: |
je suis parti pour l'implémentation actuelle d'un préprocesseur,
l'analyse syntaxique est OK mais l'analyse lexicale est absente,
m'est avis que c'est l'inverse.
|
ben non (ayant codé ce préproc., je sais ce qu'il analyse).
un processeur C/C++ réalise l'analyse des appels (notamment) par
comparaison au 'lexique' des fonctions alors connues; le préproc. ne
sait que de résoudre les include, define et autre substitutions, il
n'utilise pas de lexique de référence - dans mon cas il vérifie tout de
même les mots clés mais ne construit pas de représentation des éléments
déclarés.
Sylvain. |
|
| Back to top |
|
 |
Laurent Deniau Guest
|
Posted: Wed Aug 09, 2006 8:02 pm Post subject: Re: parser de grammaire |
|
|
Sylvain wrote:
| Quote: | Laurent Deniau wrote on 09/08/2006 14:48:
je suis parti pour l'implémentation actuelle d'un préprocesseur,
l'analyse syntaxique est OK mais l'analyse lexicale est absente,
m'est avis que c'est l'inverse.
ben non (ayant codé ce préproc., je sais ce qu'il analyse).
un processeur C/C++ réalise l'analyse des appels (notamment) par
comparaison au 'lexique' des fonctions alors connues;
|
Qu'est ce que 'lexique des fonctions connues' a a voir ici?
| Quote: | le préproc. ne
sait que de résoudre les include, define et autre substitutions, il
n'utilise pas de lexique de référence - dans mon cas il vérifie tout de
même les mots clés mais ne construit pas de représentation des éléments
déclarés.
|
Donc le fichier est deja decompose en lexemes...
A ma connaissance, l'ordre impose est
analyse lexicale *puis* analyse syntaxique *puis* analyse semantique
puisque chaque etape depend de la precedente (souvent de facon
incrementale). Ca peut etre imbrique (notament en C/C++ a cause d'une
ambiguite syntaxique dans la grammaire) mais pas inverse.
a+, ld. |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Wed Aug 09, 2006 10:18 pm Post subject: Re: parser de grammaire |
|
|
Laurent Deniau wrote on 09/08/2006 17:02:
| Quote: |
un processeur C/C++ réalise l'analyse des appels (notamment) par
comparaison au 'lexique' des fonctions alors connues;
Qu'est ce que 'lexique des fonctions connues' a a voir ici?
|
en peine de réfléchir (2 sec.) ou enclin au "bavardage" ?
version longue:
pour "lexique" je te renvoie au Littré (au autre)
les fct connues sont celles dont la déclaration est fourni par le
travail du préproc (dont chargement des include).
version courte:
qu'est-ce l'inverse avait à voir ici ?
| Quote: | le préproc. ne sait que de résoudre les include, define et autre
substitutions, il n'utilise pas de lexique de référence - dans mon cas
il vérifie tout de même les mots clés mais ne construit pas de
représentation des éléments déclarés.
Donc le fichier est deja decompose en lexemes...
|
il pourrait mais ce n'est pas /strictement parlant/ le cas.
je n'ai pas à gérer une grammaire spécifique (donc pas de lexemes) mais
seulement une syntaxe (des opérateurs et des variables formelles).
| Quote: | A ma connaissance, l'ordre impose est
analyse lexicale *puis* analyse syntaxique *puis* analyse semantique
|
et je rerépète que mon "lexique" est seulement une syntaxe.
| Quote: | puisque chaque etape depend de la precedente (souvent de facon
incrementale). Ca peut etre imbrique (notament en C/C++ a cause d'une
ambiguite syntaxique dans la grammaire) mais pas inverse.
|
si tu veux ... les termes (non explicités ici) ont des sens
informatiques et lexical suffisant flou pour cela.
et ça n'avance en rien mon bouzin ... ma question est: connaissez-vous
une lib. C++ pour ce type de process ? pas une interrogation
métaphysique sur l'art de décrire une analyse de texte (d'autre NG
seraient plus pertinents).
Sylvain. |
|
| Back to top |
|
 |
Loïc Joly Guest
|
Posted: Thu Aug 10, 2006 12:01 am Post subject: Re: parser de grammaire |
|
|
Sylvain a écrit :
| Quote: | Etienne wrote on 09/08/2006 10:01:
je cherche (aussi) un lexer pour parser des flux proposant leur propre
grammaire (déclaration de fonctions, opérateurs arithmétiques a-la-C,
valeurs immédiates).
Tu as lex/Yacc et leur equivalent GNU :
- flex --> http://www.gnu.org/software/flex/
- bison --> http://www.gnu.org/software/bison/
merci Etienne pour cette réponse.
j'avais déjà regardé une distrib. de LEX, l' "inconvénient" dans mon cas
est que je ne souhaite pas (ne peux pas) générer un source C/C++ pour
une grammaire donnée mais plutôt construire dynamiquement les
expressions (principalement des fonctions simples) présentes dans mon
input file.
|
Alors je pense que la seconde proposition d'Etienne pourrait te convenir.
| Quote: |
je suis parti pour l'implémentation actuelle d'un préprocesseur,
l'analyse syntaxique est OK mais l'analyse lexicale est absente, je suis
donc parti à coder un truc à générer des fonctions sous forme de btree
et c'est là que j'ai l'impression de réinventer l'eau tiède.
|
Comme Laurent, je pense qu'il y a confusion dans le vocabulaire employé.
Il n'y a aucun lien entre l'analyse lexicale et la notion de lexique.
Et j'ai du mal à voir comment analyser la syntaxe sans avoir au
préalable effectué un découpage en lexèmes.
| Quote: |
s'il n'y a pas mieux que lex/bison, je referais une passe sur leur
distrib. pour en extraire le lexer.
|
Mieux, je ne sais pas, mais tu n'as pas l'air d'accuser réception de la
seconde proposition. Es-tu sur de ne pas l'avoir sautée ?
--
Loïc |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Thu Aug 10, 2006 1:35 am Post subject: Re: parser de grammaire |
|
|
Loïc Joly wrote on 09/08/2006 21:01:
| Quote: |
Comme Laurent, je pense qu'il y a confusion dans le vocabulaire employé.
|
pareil ! mais mon but n'est de distinguer finement entre ce qui serait
du purement lexical vs syntaxique vs sémantique - et je n'aurais pas la
compétence littéraire pour le faire.
| Quote: | Il n'y a aucun lien entre l'analyse lexicale et la notion de lexique.
|
si ce n'est qu'un "lexème" est l'"unité minimale de signification
appartenant à un lexique" (www.atilf.fr).
si j'ai introduit ce lien ou ce sous-entendu c'est seulement pour dire
qu'une analyse lexicale i.e. le découpage des lexèmes - qui au moins
dans un tel cadre doivent appartenir à un lexique (le moteur ne s'attend
pas à 'découvrir' des mots non prévu) - n'est pas la partie sur laquelle
je demandais des sources.
| Quote: | Et j'ai du mal à voir comment analyser la syntaxe sans avoir au
préalable effectué un découpage en lexèmes.
|
nous sommes d'accord ! "lexème" est un peu trop riche pour mon cas,
c'est juste une pôôvre ponctuation - mais vous avez raison.
| Quote: | s'il n'y a pas mieux que lex/bison, je referais une passe sur leur
distrib. pour en extraire le lexer.
Mieux, je ne sais pas, mais tu n'as pas l'air d'accuser réception de la
seconde proposition. Es-tu sur de ne pas l'avoir sautée ?
|
j'ai bcp moins regardé bison que lex, je ne les pas 'sauté', simplement
pas encore étudié ... mais j'y travaille (en autre chose); merci pour
votre confirmation à regarder cette voie.
Sylvain. |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Thu Aug 10, 2006 1:41 am Post subject: Re: parser de grammaire |
|
|
Sylvain wrote on 09/08/2006 22:35:
| Quote: |
j'ai bcp moins regardé bison que lex ...
|
lire 'spirit' !... |
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Thu Aug 10, 2006 3:15 pm Post subject: Re: parser de grammaire |
|
|
Jean-Marc Bourguet wrote on 10/08/2006 11:31:
| Quote: |
Avant de regarder comment utiliser les programmes, je te
|
oulah, je ne les utilise pas rassure-toi, j'en code uniquement.
| Quote: | suggère de lire un peu de théorie sinon à forcer d'employer
les mots dans un sens différent de celui qu'ils ont acquis
dans le domaine
|
"ils ont acquis" ?!? tout seul ?
btw, dans quel domaine ? linguistique ? ce n'est pas mon point.
informatique ? mon but n'était pas "d'employer des mots" mais plutôt de
coder une représentation de fonctions simples.
un bouquin épuisé en anglais ?! proposer cela à un mec qui ne comprend
rien est sûrement de l'ironie.
Sylvain. |
|
| Back to top |
|
 |
Laurent Deniau Guest
|
Posted: Thu Aug 10, 2006 3:38 pm Post subject: Re: parser de grammaire |
|
|
Sylvain wrote:
| Quote: | Laurent Deniau wrote on 09/08/2006 17:02:
et ça n'avance en rien mon bouzin ... ma question est: connaissez-vous
une lib. C++ pour ce type de process ? pas une interrogation
métaphysique sur l'art de décrire une analyse de texte (d'autre NG
seraient plus pertinents).
|
Etant donne que tu as l'air d'etre un expert en techniques de parsing,
la litterature sur le sujet ne te sera d'aucune aide et je pense que tu
n'auras aucune difficulte pour ecrire tes propres outils en quelques
jours et mener a bien ton projet. Revient nous voir quand tu auras fini
pour nous faire partager tes avancees.
a+, ld. |
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
Posted: Thu Aug 10, 2006 9:00 pm Post subject: Re: parser de grammaire |
|
|
Sylvain <noSpam (AT) mail (DOT) net> writes:
| Quote: | Jean-Marc Bourguet wrote on 10/08/2006 11:31:
Avant de regarder comment utiliser les programmes, je te
oulah, je ne les utilise pas rassure-toi, j'en code uniquement.
suggère de lire un peu de théorie sinon à forcer d'employer
les mots dans un sens différent de celui qu'ils ont acquis
dans le domaine
"ils ont acquis" ?!? tout seul ?
|
Je ne suis pas linguiste et je connais mal le processus par
lequel les mots et les expressions acquièrent un sens.
| Quote: | btw, dans quel domaine ? linguistique ? ce n'est pas mon point.
informatique ?
|
Informatique.
| Quote: | mon but n'était pas "d'employer des mots" mais plutôt de
coder une représentation de fonctions simples.
|
Tu peux donner le sens que tu veux aux mots et aux
expressions, mais quand tu poses des questions, si ce sens
n'est pas celui généralement admis dans le contexte dans
lequel tu poses tes questions, tu vas au devant de
problèmes. Tu peux naturellement prétendre que c'est les
autres qui ont un problème, mais c'est toi qui n'aura pas de
réponses pertinentes.
| Quote: | tu ne comprendras rien et personne ne te comprendra. Une
référence: http://www.cs.vu.nl/~dick/PTAPG.html
un bouquin épuisé en anglais ?! proposer cela à un mec qui
ne comprend rien est sûrement de l'ironie.
|
Il faut lire jusqu'au bout... le bouquin est disponible en
PDF et en Postscript.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org |
|
| Back to top |
|
 |
Sylvain Guest
|
Posted: Fri Aug 11, 2006 1:30 am Post subject: Re: parser de grammaire |
|
|
Jean-Marc Bourguet wrote on 10/08/2006 18:00:
| Quote: |
Tu peux donner le sens que tu veux aux mots et aux
expressions, mais quand tu poses des questions, si ce sens
n'est pas celui généralement admis dans le contexte dans
lequel tu poses tes questions, tu vas au devant de
problèmes. Tu peux naturellement prétendre que c'est les
autres qui ont un problème, mais c'est toi qui n'aura pas de
réponses pertinentes.
|
j'ai donné des sens-à-moi ? j'ai prétendu ? ...
j'ai peur d'avoir perdu le fil, ou alors il est parti en sucette assez
loin de ma question initiale - no more comments.
Sylvain. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|