Tout a fait. Faire un lexer pour du code C est une horreur (sans parler du C++). Je m'etais essaye a faire un refactorer mais on se casse tres vite les dents sur le parser de code. Des trucs comme:
int *a, *b, c[5]; -> mmh, joli casse-tete pour debrouiller tout ca de facon automatique
void *f( int a ); -> f renvoie un void * ou f est un pointeur de fonction ?
La difficulte est presente des le debut, quand tu veux savoir de facon automatique si une ligne est une definition (int a, MyObject *a[MY_OBJECT_ARRAY_SIZE], struct a ** b;) ou une ligne d'utilisation.
Et des que tu rajoutes les typedef, les macros et les objets, c'est une horreur sans nom.
A cote de ca, Java ou python ont une syntaxe deterministe plus claire, qui permer d'analyser et de modifier un programme via un autre programme.
[^] # Re: Havoc Pennington se pose des questions sur les langages du libre
Posté par Philippe F (site web personnel) . En réponse à la dépêche Havoc Pennington se pose des questions sur les langages du libre. Évalué à 1.
int *a, *b, c[5]; -> mmh, joli casse-tete pour debrouiller tout ca de facon automatique
void *f( int a ); -> f renvoie un void * ou f est un pointeur de fonction ?
La difficulte est presente des le debut, quand tu veux savoir de facon automatique si une ligne est une definition (int a, MyObject *a[MY_OBJECT_ARRAY_SIZE], struct a ** b;) ou une ligne d'utilisation.
Et des que tu rajoutes les typedef, les macros et les objets, c'est une horreur sans nom.
A cote de ca, Java ou python ont une syntaxe deterministe plus claire, qui permer d'analyser et de modifier un programme via un autre programme.