Dans le desordre, voici quelques observations
qui devrait aider au deboguage sous Lex/Yacc



%%
  var result : integer;

[aA][nN][gG][lL][eE]            return(ANGLE); 
[aA][xX][iI][oO][mM]            return(AXIOM); 

{D}*(\.{D}+)? begin  val(yytext, yylval.yyReal, result);
			writeln('NUM',yytext);
				  if result=0 then
				    return(NUM)
				  else
				    return(ILLEGAL)
				end;

[a-zA-Z]                          begin 
        	  yylval.yyInteger := ord(upCase(yytext[1]))-ord('A')+1;
				  return(LETTRE)
			end;
C[0-9]*                    return(COLOR);

\t|" "   		   ; (*les tabulations et les espaces sont ignorees*)

";".*	                   ;(* les commentaires sont ignores.
                            !   pb avec name si jamais un comment a un '{' *)

[a-zA-Z0-9]+[" "|\t]*"{"   begin name:=yytext;return(NomDEB); end;

"}"[\n]*		   return(FIN);

[!/\\<>=,\]+\[-\|@\n]  returnc(yytext[1]);

. 			; (* les autres caracteres sont ignor‚s*)

* bien distinguer return (pour les lexemes) de returnc (pour un caractere)
* oublier de traiter les tabulations  (soit avec \t, soit avec .)
* [\t ]+ est different de [\t]+ (comprend ou pas l'espace...)
* avoir oublier que Lex et Yacc distinguent majuscule/minuscule
  (* pb courant  sur les tokens passant du .l et .y *)
* avoir ete a la ligne 
  LA regle est que les instructions Lex/Yacc sont les lignes ne commencant 
  pas par un blanc  (et seulement celles-ci)
* dans le .y, mettre le mauvais nom du .l associe : {$I totolex} au lieu de {$I titilex}
* star de []
* D=[0-9] au lieu de D [0-9]
* dans ce distinguer 
   {D} (qui va accepter 5)
  de {[0-9]} (qui va accepter {5})
  et de D (qui va accepter seulement d majuscule)
  RQ: les {} ont autre sens dans  a{2,3) = (aa|aaa)
* avoir oublie la difference entre  . et \.
* notation des caracteres reserves \. \% \\ \| \{ \} \+ \* ...
* diff entre [] () et {}
   [ab] meme chose que (a|b)
   {} a 3 sens possibles suivants les cas (confer {D})
* avoir oublie que le joker . ne contient pas le retourchariot (code ASCII 13)
* attention aux raccourcis hatifs du genre
  [A-z] et [a-Z]
  rappel les ascii de 65 (A) a 122 (z)
  comprennent ...XYZ[\]^_`abc...

* la ligne avec %{ ne doit rien contenir d'autre (pas d'espaces, etc.)
  idem avec %} et %%
  (* erreur courante dans la section ou on declare uses lexlib; ...)

* ecrire .\n au lieu de .|\n (donc si input=a, on est dans le premier cas)
* dans le fichier .l ne pas mettre une espace apres le |
  Il y a en fait deux possibilites "legales" :
ou bien
q |
Q

ou bien
q|Q

toutes les autres du genre q | Q ou bien q |Q etc.
ne vont  pas passer a la compil



voila, c'est tout...
Hope this helps...
Cyril