Aller au contenu

[RÉSOLU] interprete langage

Featured Replies

Posté(e)

xxxx

Posté(e)

Surement à base de trucs genre lex et/ou yacc

Un peu comme un compilo donc... mais bon en fait j'dis ça mais j'en sais rien :fumer:

Posté(e)

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...

Posté(e)

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.

Posté(e)

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).

Posté(e)

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?

Posté(e)

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...

Posté(e)

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:

Posté(e)
cf le wc de theo :ouioui:
Dis que mes réponses sont à chier pendant que tu y est...

:non:

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

:eeek2:

Posté(e)

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

Modifié par astero-H

Posté(e)

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:

Posté(e)
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 ;)

Archivé

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