Bonjour,

Je voudrais essayer de créer une petite interface de chat (style IRC) avec lex et yacc (en fait flex et bison puisque je suis sous window).
Je voudrais faire une commande shout qui aurait pour syntaxe:
et qui permettrait de récupérer le texte enrré par l'utilisateur.
J'essaie de m'inspirer de ce tutoriel lex et yacc: http://ds9a.nl/lex-yacc/cvs/lex-yacc-howto.html (chapitre 4.1) et voici mon code.
Lex:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
%{
#include <stdio.h>
#include "minChat.tab.h"
%}
%%
shout         {printf("shout command!\n"); 
               return TOKSHOUT;}
[^\n]+\n      {printf("this is a line!\n");
               return LINE;}
%%
Yacc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
%{
#include <stdio.h>
#include <string.h>
 
void yyerror(const char *str);
int yywrap();
 
 
%}
 
%token NUMBER LINE TOKSHOUT
 
 
 
%%
commands: /* empty */
        | commands command
        ;
 
command:
        shout
        ;
 
 
shout:
        TOKSHOUT LINE
        {
		printf("shouting %s\n",$2);
        }
        ;
 
%%
 
void yyerror(const char *str)
{
        fprintf(stderr,"error: %s\n",str);
}
 
int yywrap()
{
        return 1;
} 
 
int main(void)
{
        return yyparse();
}
Le code ne produit pas de warning pour flex et bison et compile bien avec Visual C++, mais à l'execution le programma affiche toujours "this is a line!" meme quand ce que j'entre commence par shout, puis me dit "syntax error".
Si quelqu'un a une idée de ce qui ne va pas...