Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1188 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Analyseur lexical / syntaxique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Analyseur lexical / syntaxique

n°538883
chrisbk
-
Posté le 14-10-2003 à 00:28:11  profilanswer
 

Bon visiblement le topic emacs est pas la bonne place pour ca, alors je refais un topic :o
 
Ceux qui ici ont décider d'abandonner toute vie sociale au profit de l'ecriture de grammaire BNF, vous utilisez quel(s) outils pour arriver a vos fins  ?
 
depuis le debut j'utilise les venerables flex/yacc, mais y'a ptet mieux quand meme ?
 
(cat C++ parce que si ca recrache du C++ ca m'irait tout autant)

mood
Publicité
Posté le 14-10-2003 à 00:28:11  profilanswer
 

n°538891
Taz
bisounours-codeur
Posté le 14-10-2003 à 00:31:24  profilanswer
 

bah je suis entrain d'essayer de cpater flex --c++ mais j'arrive pas vraiment à m'en servir. apères je regarde http://boost.org/libs/spirit/index.html qui est nettement plus élaboré, plus complexe à rédiger qu'un fichier lex.
 
je suis pour que dans ce topic il y ait le code pour faire un wc en C++ avec flex et spirit

n°538952
nraynaud
lol
Posté le 14-10-2003 à 08:46:48  profilanswer
 

Les nouveaux (jlex, ocamllex) ont des lexers contextuels, et sortent des objets correctement typés et avec de l'information dedans (et pas en variable globale) et sont réentrants. Sur un truc comme CUPS tu peux choisir l'implémentation de l'automate (mais tu peux pas choisir son type, hélas).
 
Le pb c'est que les techniques de compilations modernes ne sont en général pas prévues dans ces outils et on en revient au custom.

n°538957
kadreg
profil: Utilisateur
Posté le 14-10-2003 à 08:58:30  profilanswer
 

Moi, je me le tape à la main en C++, avec un arbre syntaxique écrit par des gents qui ont fait du lisp avant (cdr, car, cons, snoc...).
 
[:sisicaivrai]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°538966
Taz
bisounours-codeur
Posté le 14-10-2003 à 09:21:06  profilanswer
 

excellent [:dawa]

n°538967
Joel F
Real men use unique_ptr
Posté le 14-10-2003 à 09:23:55  profilanswer
 

Spirit est trés bon, essayer c'est l'adopter

n°538982
gilou
Modérateur
Modzilla
Posté le 14-10-2003 à 09:59:17  profilanswer
 

chrisbk a écrit :

Bon visiblement le topic emacs est pas la bonne place pour ca, alors je refais un topic :o
 
Ceux qui ici ont décider d'abandonner toute vie sociale au profit de l'ecriture de grammaire BNF, vous utilisez quel(s) outils pour arriver a vos fins  ?
 
depuis le debut j'utilise les venerables flex/yacc, mais y'a ptet mieux quand meme ?
 
(cat C++ parce que si ca recrache du C++ ca m'irait tout autant)
 


J'ai essaye divers trucs, j'en suis revenu
1) a lex et yacc ou flex et bison  
2) a la bite et au couteau
selon les cas.
 
A+,


Message édité par gilou le 14-10-2003 à 10:03:58

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°538983
gilou
Modérateur
Modzilla
Posté le 14-10-2003 à 10:03:35  profilanswer
 

Ce qui est important, avec les parsers (sauf projets de fac), c'est leur performances, car un parser qui se traine, ca se voit vite dans une appli. Ca donne quoi, spirit, en perfs par rapport a du flex/bison et du C??
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°538987
Taz
bisounours-codeur
Posté le 14-10-2003 à 10:07:35  profilanswer
 

je veux un exemple C++ avec flex :o

n°538993
gilou
Modérateur
Modzilla
Posté le 14-10-2003 à 10:10:34  profilanswer
 

Taz a écrit :

bah je suis entrain d'essayer de cpater flex --c++ mais j'arrive pas vraiment à m'en servir. apères je regarde http://boost.org/libs/spirit/index.html qui est nettement plus élaboré, plus complexe à rédiger qu'un fichier lex.
 
je suis pour que dans ce topic il y ait le code pour faire un wc en C++ avec flex et spirit


wc.l

Code :
  1. %{
  2. int num_lines = 0, num_chars = 0;
  3. }%
  4. %%
  5. \n      ++num_lines; ++num_chars;
  6. .       ++num_chars;
  7. %%
  8. main()
  9. {
  10.    yylex();
  11.    printf( "# of lines = %d, # of chars = %d\n", num_lines, num_chars );
  12. }


 
A+,


Message édité par gilou le 14-10-2003 à 10:11:26

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 14-10-2003 à 10:10:34  profilanswer
 

n°538997
Taz
bisounours-codeur
Posté le 14-10-2003 à 10:14:08  profilanswer
 

tu te fout de qui ?


Message édité par Taz le 14-10-2003 à 10:14:29
n°538998
gilou
Modérateur
Modzilla
Posté le 14-10-2003 à 10:15:30  profilanswer
 

Taz a écrit :

tu te fout de qui ?

:D
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°539002
Taz
bisounours-codeur
Posté le 14-10-2003 à 10:19:07  profilanswer
 

donc ou j'en étais ... quelqu'un a un exemple C++ avec flex ?

n°539165
HelloWorld
Salut tout le monde!
Posté le 14-10-2003 à 13:50:07  profilanswer
 

Citation :

Moi, je me le tape à la main en C++, avec un arbre syntaxique écrit par des gents qui ont fait du lisp avant (cdr, car, cons, snoc...).


 
J'avais croisé un code en C++ qui definissait une liste est ses fonctions (cdr, car, ...) afin d'utiliser une syntaxe genre LISP dans un code 100% C++. Je me souviens plus trop du soft qui faisait ça...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°539211
kadreg
profil: Utilisateur
Posté le 14-10-2003 à 14:16:01  profilanswer
 

HelloWorld a écrit :

Citation :

Moi, je me le tape à la main en C++, avec un arbre syntaxique écrit par des gents qui ont fait du lisp avant (cdr, car, cons, snoc...).


 
J'avais croisé un code en C++ qui definissait une liste est ses fonctions (cdr, car, ...) afin d'utiliser une syntaxe genre LISP dans un code 100% C++. Je me souviens plus trop du soft qui faisait ça...


 
openC++ ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°539236
HelloWorld
Salut tout le monde!
Posté le 14-10-2003 à 14:30:46  profilanswer
 

Nan. Un soft à part entière, ou y'avait un peu d'IA. Ma souvien splus désolé [:spamafote]
 
edit : saloperie de smiley


Message édité par HelloWorld le 14-10-2003 à 14:35:44

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°539871
nraynaud
lol
Posté le 15-10-2003 à 01:04:29  profilanswer
 

gilou a écrit :

a la bite et au couteau

ça me rappelle ce gars à qui il vait fallu une journée pour rajouter un caractère dans sa grammaire (VHDL ou verilog, me souviens plus).

n°540450
gilou
Modérateur
Modzilla
Posté le 15-10-2003 à 15:28:47  profilanswer
 

nraynaud a écrit :

ça me rappelle ce gars à qui il vait fallu une journée pour rajouter un caractère dans sa grammaire (VHDL ou verilog, me souviens plus).

Je pensais par exemple a l'excellent parser de XML dans expat par exemple. Si tu ne connais pas le code correspondant (en C) n'hesites pas a y jeter un oeil, c'est superbe comme implem specifique.
Mais il est clair que K Clark a ecrit a la pogne un automate sur papier auparavant.
Je fis ce genre de chose pour de l'algol et du LaTeX, il y a un bail.
il y a 4/5 ans, je pouvais causer lex, yacc et cperf comme je respirais, mais la, par manque de pratique, j'en ai oublié pas mal.
A+,


Message édité par gilou le 15-10-2003 à 15:30:37

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°540452
godbout
Génial.
Posté le 15-10-2003 à 15:32:29  profilanswer
 

Ca vient pleurer sur ICQ et après ça pond un topic sur progra, la honte :D

n°540601
nraynaud
lol
Posté le 15-10-2003 à 17:25:28  profilanswer
 

gilou a écrit :

Je pensais par exemple a l'excellent parser de XML dans expat par exemple. Si tu ne connais pas le code correspondant (en C) n'hesites pas a y jeter un oeil, c'est superbe comme implem specifique.

Mouarf, j'en avait fait un en smalltalk, en custom aussi. je sais pas s'il était très élégant, mais je m'étais appliqué et il avait été bien jugé par les gourous. C'est pour ça que maintenant je dis que XML c'est de la merde : trop compliqué à parser pour ce que ça fait. Et c'est aussi pour ça que j'ai un gros doute sur le XML embarqué : parser trop gros (parcequ'il faut obligatoirement un parser de DTD en plus du parser XML).
 
Mais bon, j'ai pas du tout envie de lire du C tout de suite, tant que j'y suis pas obligé. Le bijou restera dans sa boite.

n°540618
chrisbk
-
Posté le 15-10-2003 à 17:45:35  profilanswer
 

Godbout a écrit :

Ca vient pleurer sur ICQ et après ça pond un topic sur progra, la honte :D


 
Je me renseigne :O
 
et c'est pas a un programmeur de rabais comme toi que je viendrais me plaindr [:kiki] [:ddr555]

n°540630
Kristoph
Posté le 15-10-2003 à 18:04:27  profilanswer
 

nraynaud a écrit :

Mouarf, j'en avait fait un en smalltalk, en custom aussi. je sais pas s'il était très élégant, mais je m'étais appliqué et il avait été bien jugé par les gourous. C'est pour ça que maintenant je dis que XML c'est de la merde : trop compliqué à parser pour ce que ça fait. Et c'est aussi pour ça que j'ai un gros doute sur le XML embarqué : parser trop gros (parcequ'il faut obligatoirement un parser de DTD en plus du parser XML).
 
Mais bon, j'ai pas du tout envie de lire du C tout de suite, tant que j'y suis pas obligé. Le bijou restera dans sa boite.


 
Depuis quand on n'a besoin d'un parseur de DTD pour parser du XML ?

n°540643
nraynaud
lol
Posté le 15-10-2003 à 18:10:24  profilanswer
 

Kristoph a écrit :


Depuis quand on n'a besoin d'un parseur de DTD pour parser du XML ?

Depuis que les définitions d'entités sont planquées dedans.
Ou depuis que la DTD est dans la norme ?
 
exemple dans le dernier cadre de :
http://www.w3.org/TR/REC-xml#sec-entexpand
 
edit : stricto-sensus tu peux "parser" un XML en sautant le doctype ; mais comme tu vas peut-être vouloir faire quelquechose des données, en pratique tu est obligé de développer les entités et les entitées parsées.


Message édité par nraynaud le 15-10-2003 à 18:12:51
n°540649
gilou
Modérateur
Modzilla
Posté le 15-10-2003 à 18:14:52  profilanswer
 

nraynaud a écrit :

Mouarf, j'en avait fait un en smalltalk, en custom aussi. je sais pas s'il était très élégant, mais je m'étais appliqué et il avait été bien jugé par les gourous. C'est pour ça que maintenant je dis que XML c'est de la merde : trop compliqué à parser pour ce que ça fait. Et c'est aussi pour ça que j'ai un gros doute sur le XML embarqué : parser trop gros (parcequ'il faut obligatoirement un parser de DTD en plus du parser XML).
 
Mais bon, j'ai pas du tout envie de lire du C tout de suite, tant que j'y suis pas obligé. Le bijou restera dans sa boite.


1- il est petit, expat
2- si tu ne consideres que le XML well-formed, il n'y a pas de concept de DTD :D
[Il ne valide pas tout en mode DTD expat d'ailleurs: pas de validation du determinisme de la definitions du contenu d'un element. Par contre, si la DTD de depart est valide, il valide correctement le document par rapport a la DTD]
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°540655
gilou
Modérateur
Modzilla
Posté le 15-10-2003 à 18:30:37  profilanswer
 

nraynaud a écrit :

Depuis que les définitions d'entités sont planquées dedans.
Ou depuis que la DTD est dans la norme ?
 
exemple dans le dernier cadre de :
http://www.w3.org/TR/REC-xml#sec-entexpand
 
edit : stricto-sensus tu peux "parser" un XML en sautant le doctype ; mais comme tu vas peut-être vouloir faire quelquechose des données, en pratique tu est obligé de développer les entités et les entitées parsées.


Il suffit que la declaration des entités apparaissant dans le corps de ton document soit dans le internal subset.
 

<!DOCTYPE toto [
<!ENTITY tutu "Sly a un tutu rose." >
]>
<toto>&tutu;</toto>


 
est du XML well-formed.
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°540667
nraynaud
lol
Posté le 15-10-2003 à 18:38:04  profilanswer
 

gilou a écrit :


Il suffit que la declaration des entités apparaissant dans le corps de ton document soit dans le internal subset.

C'est ce que je dis, ça t'oblige à changer de parser le temps de parser cette partie. Tout ça passke que peut-être un jour un mec utilisera cette possibilité pour mettre des données dans une "parsed entity". Chose que je n'ai jamais vu dans la nature mais qui oblige à développer un autre parser (de DTD) pour respecter la norme.
 
edit : un parser qui jette les règles de grammaire DTD et qui ne prends que les définition d'entitées. Je parle pas d'un système validant qui est déjà plus balaise.


Message édité par nraynaud le 15-10-2003 à 18:39:36
n°541107
gilou
Modérateur
Modzilla
Posté le 16-10-2003 à 02:51:23  profilanswer
 

nraynaud a écrit :

C'est ce que je dis, ça t'oblige à changer de parser le temps de parser cette partie. Tout ça passke que peut-être un jour un mec utilisera cette possibilité pour mettre des données dans une "parsed entity". Chose que je n'ai jamais vu dans la nature mais qui oblige à développer un autre parser (de DTD) pour respecter la norme.
 
edit : un parser qui jette les règles de grammaire DTD et qui ne prends que les définition d'entitées. Je parle pas d'un système validant qui est déjà plus balaise.

Tu veux dire quoi exactement la?  
 
De toute façon, mort aux DTDs; Vive les XML Schemas (c'est tres verbeux, d'accord, mais bien plus puissant).
Reste a supprimer la derniere scorie du SGML encore presente dans la grammaire du XML : les CDATA sections (un mecanisme basé sur des processing instructions standardisées aurait ete plus approprié a mon avis).
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°541109
nraynaud
lol
Posté le 16-10-2003 à 03:15:01  profilanswer
 

Qu'un jour un gars va te pondre un document avec ça :

Code :
  1. <?xml version='1.0'?>
  2. <!DOCTYPE test [
  3. <!ELEMENT test (#PCDATA) >
  4. <!ENTITY % xx '&#37;zz;'>
  5. <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
  6. %xx;
  7. ]>
  8. <test>This sample shows a &tricky; method.</test>


 
dedans, juste pour te faire chier. Mais il aura raison car c'est marqué dans la norme.
Juste pour cet hypothétique risque que quelqu'un génère des entités dans son xml, tous les parsers doivent parser le doctype correctement.
Bien entendu mort à cette verrue, mais pour l'instant elle est là et je me demande bien coment la transition va être gérée.
Mort aussi à leur syntaxe qui pue et vive le lisp, langage qui permet réellement d'avoir des parser compacts et des données structurées.

n°541144
kadreg
profil: Utilisateur
Posté le 16-10-2003 à 10:03:52  profilanswer
 

nraynaud a écrit :

vive le lisp, langage qui permet réellement d'avoir des parser compacts et des données structurées.


 
ta gueule :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°541158
nraynaud
lol
Posté le 16-10-2003 à 10:26:19  profilanswer
 

T'es pas concerné, on parle de langages, de grammaires et de parsers. Pas du machin boiteux qui transforme un programe C++ en un graphe quelconque en mémoire.
 
 
edit : en plus je parlais de parser du lisp, pas de parser autre chose en lisp


Message édité par nraynaud le 16-10-2003 à 10:28:07
n°541875
gilou
Modérateur
Modzilla
Posté le 16-10-2003 à 23:29:54  profilanswer
 

nraynaud a écrit :

Qu'un jour un gars va te pondre un document avec ça :

Code :
  1. <?xml version='1.0'?>
  2. <!DOCTYPE test [
  3. <!ELEMENT test (#PCDATA) >
  4. <!ENTITY % xx '&#37;zz;'>
  5. <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
  6. %xx;
  7. ]>
  8. <test>This sample shows a &tricky; method.</test>


 
dedans, juste pour te faire chier. Mais il aura raison car c'est marqué dans la norme.
Juste pour cet hypothétique risque que quelqu'un génère des entités dans son xml, tous les parsers doivent parser le doctype correctement.
Bien entendu mort à cette verrue, mais pour l'instant elle est là et je me demande bien coment la transition va être gérée.
Mort aussi à leur syntaxe qui pue et vive le lisp, langage qui permet réellement d'avoir des parser compacts et des données structurées.


Oui et non.
C'est pas pour faire chier, ca peut etre une contrainte specifique a un environnement ou la DTD est pas mature et sujette a changements...
Et ca permet de generer plein de tests monofichiers :D
Il y a toujours le cas des documents XML ou un editeur interactif ajoute des images au document (ou toute donnée non XML processée par un mecanisme spécifique).
Ce mecanisme permet de regrouper en tete les definitions des entites correspondants a ces fichiers externes.
Et il y a le cas ou tu veux redefinir des entites definies dans la DTD, ce qui permet d'avoir une valeur par defaut, et une valeur customisée pour le document...
Mais a part ces deux cas...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°546938
Taz
bisounours-codeur
Posté le 22-10-2003 à 11:59:51  profilanswer
 

personne n'a donc d'exemple de flex C++ ?

n°546975
nraynaud
lol
Posté le 22-10-2003 à 12:45:26  profilanswer
 
n°546979
Taz
bisounours-codeur
Posté le 22-10-2003 à 12:51:30  profilanswer
 

ben c'est page, je l'ai lu 100fois, mais bon, c'est des cout à la place de printf + ça
 
    FlexLexer* lexer = new yyFlexLexer;
    while(lexer->yylex() != 0)
 
 
bref, c'est vraiment pas tres développé alors qu'apparemment on peu faie de l'héritage, est, manipuler les stream

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Analyseur lexical / syntaxique

 

Sujets relatifs
[Bluefish] Coloration syntaxiqueColoration syntaxique de C++ vers du HTML, problèmes ....
Analyseur Synatxique Java pour JavaEnregistrer la coloration syntaxique
Rapport et coloration syntaxique ?Appliquer un style sur du texte, par reconnaissance syntaxique
cherche un "analyseur de classes" pour JAVA2en1: mot-clef typeof() et coloration syntaxique pour le c++
[Analyse syntaxique] La, faut qu'on m'explique un truc... spapossible.[LISP] coloration syntaxique sous MS visual studio ?
Plus de sujets relatifs à : Analyseur lexical / syntaxique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR