Aller au contenu

[RÉSOLU] interprete langage


Invité florianl

Messages recommandés

A mon avis, pas tout à fait comme un compilo, pour la bonne raison que les pages web trouvées aux quatre coins du Net ont une fâcheuse tendance à ne pas respecter la syntaxe HTML telle que décrite dans la norme (balises mal fermées, mal imbriquées, mots-clés en majuscules, etc).

Très difficile de définir un automate à états finis dans ces conditions...

Lien vers le commentaire
Partager sur d’autres sites

Il n'y a pas tant de lex/yacc que ça :

find . -name '*_yy.c'
./security/nss/cmd/modutil/lex.Pk11Install_yy.c

find . -name '*.l'
./security/nss/cmd/crlutil/crlgen_lex_orig.l
./security/nss/cmd/modutil/installparse.l

Par contre il y a une masse de C/C++ (ce qui est prévisible).

  find . -name '*.c' | wc -l
1588

find . -name '*.cpp' | wc -l
4563

find . -name '*.h' | wc -l
4799

Et un peu de perl/python et d'assembleur

find . -name '*.pl' | wc -l
197

find . -name '*.py' | wc -l
27

find . -name '*.s' | wc -l
83

Pour le reste, c'est des Makefiles et de la doc principalement.

Lien vers le commentaire
Partager sur d’autres sites

J'ai trouvé ça en récupérant les sources et en comptant.

Et oui, il doit y avoir un parser pour compter entre les <truc> et </truc> et appliqué l'effet désiré.

Mais bon comme c'est vachement permissif, il y a tout un tas de subtilité en plus (exemple : <tr><td></tr>, manque un </td>, mais heureusement le browser s'en sort).

Lien vers le commentaire
Partager sur d’autres sites

je suppose (a tort ? :transpi: ) qu'il ont un algorythme (je sais pas si cela s'apelle comme ca) qui fait :

si <br> mettre en gras jusqu'à </br>

Si c'est comme cela que les navigateurs font j'aimerais voir l'algorythme

sinon je voudrais savoir comment il font

merci en esperant avoir ete plus clair

Ouais, ils font comme ca... Mais comme le dit theo, faut prendre en compte le code des dév IE-only tout pourri! Donc ca complique énormément je pense...

Le meilleur moyen de voir à quoi ca ressemble... c'est de zyeuter les sources! Et justement le meilleur (pub INside :mdr2: ) navigateur Web publie ses sources, elle est pas belle la vie?

Lien vers le commentaire
Partager sur d’autres sites

Oui enfin je parlais surtout des erreur de codage comme des fin de balises oubliés, des capitales ou des minuscules sans distinction, des espaces n'importe où, des caractères là où il n'en faut pas.

Mais c'est vrai que mozilla a rajouté *en plus* un dirty mode pour interpréter les pages IE sans que ce soit trop moche...

Lien vers le commentaire
Partager sur d’autres sites

J'ai dut mal m'exprime:

Je voudrais savoir comment les navigateurs font

pour transformer le code en page

je suppose (a tort ? ;) ) qu'il ont un algorythme (je sais pas si cela s'apelle comme ca) qui fait :

si <br> mettre en gras jusqu'à </br>

Si c'est comme cela que les navigateurs font j'aimerais voir l'algorythme

sinon je voudrais savoir comment il font

merci en esperant avoir ete plus clair

Ben comme tout logiciel alors... :transpi:

Pour afficher des trucs il se sert de l'api de l'os...

Win32 pour windows par exemple.... ou les MFC (qui je pense, utilisent win32 donc bon).

En clair avec des lignes, des points, des polices, des couleurs, etc.... ben ouais tu croyais quoi ? :D

Après c'est un "gros logiciel" quand même, donc du code doit y'en avoir un sacré paquet...

cf le wc de theo :yes:

Lien vers le commentaire
Partager sur d’autres sites

Je le savais deja pas la peine de faire un message inutile pour ca

Mais bon c'est pas grave :yes:

Je vais voir dans les sources :chinois: si je trouve le parser !

si qqn c'est ou il est merci de me faire signe

Après on peut pas deviner non plus :transpi:

C'est qu'on en croise des vertes et des pas mures des fois... :zarb:

(cf en dessous de ton topic : "Bonjour, je veux faire un OS" ... )

Sinon la logique de "parsage" doit pas être compliquée, en clair c'est reconstituer une page valide en essayant d'interpréter au mieux les erreurs de syntaxe.

Ensuite pour afficher les pages la logique est également toute bête je pense :

Une fois le code parsé on a un arbre. Reste plus qu'à le parcourir et à faire du node->display()...

Pour te faire une idée de la hierarchie des classes, je pense que c'est pile poil DOM.

Ensuite ya javascript, qui une fois parsé modifie surement l'arbre puis refresh() de la page.

Bien sur le code derrière tout ça doit être bien bourrin... bon courage :yes:

Hum. Les <br> qui mettent en gras, ça doit être dans IE :fou:

:-D

Lien vers le commentaire
Partager sur d’autres sites

le parser n'a strictement rien à voir avec le moteur de rendu.

Quand tu as parsé ta page, tu dispose d'un arbre normalement pas trop mal foutu. à partir de là, tu le parcours avec un certaine heuristique bien choisie (tu peux essayer profondeur d'abord, ça devrait pas trop mal marcher), et tu affiches le contenu en respectant les attribus (tu tombe sur un <p>, ben tu créé une nouvelle zone de texte en dessous de l'élément précédent, pour un <img> tu colle un nouvel icone, etc, etc...)

:francais:

Lien vers le commentaire
Partager sur d’autres sites

tu affiches le contenu en respectant les attribus (tu tombe sur un <p>, ben tu créé une nouvelle zone de texte en dessous de l'élément précédent, pour un <img> tu colle un nouvel icone, etc, etc...)

Voila c'est ca que je cherche dans les sources

En vain :francais:

Je dois mal chercher

aïe, y a pas beaucoup de moteur de rendu html...

essaye les sources de khtml, c'est peut-être le moins chiant ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...