13Fermer15
Lionel DebrouxLe 11/01/2009 à 19:15
Oooh. J'ai explosé la mise en page avec mon bloc pre de ./11. Je vais éditer ça...

G++/GCC est passé d'un parser auto-généré à un parser fait à la main, pour plus d'efficacité.

ReadLine: 
	cmpi.b	#0x0d,(%a3)				|EOL ? 
	bne.s	NoNewline				|no 
		addq.l	#1,%a3				|else get next char 
		addq.w	#1,%d4				|update line counter 
		bra.s	ReadLine			|and loop 
NoNewline:

Si ReadLine est (et c'est probable) un label de début de fonction, non

NewLine:
	addq.l	#1,%a3				| get next char 
	addq.w	#1,%d4				|update line counter 

ReadLine: 
	cmpi.b	#0x0d,(%a3)				|EOL ? 
	beq.s	Newline				|no 
NoNewline:

magic

GCC peut faire des optimisations de ce genre. Mais l'optimisation prématurée, c'est assez mal ^^


J'ai entendu dire à plusieurs reprises, par des gens qui aiment bien ces langages, que les capacités de "pattern matching" et de représentation arborescente "transparente" de certains langages type ML les rendent bien adaptés à du parsing. Mais je ne connais pas assez ces langages pour avoir une idée là-dessus grin