%{ // Fichier ptq.l : Lexeur pour PTQ // -------------------------------- #include "ptq.h" char * chaine_cour ; %} %% /* Symboles (constantes logiques) */ A { yylval = 1 ; return QUANT ; } E { yylval = 2 ; return QUANT ; } L { yylval = 0 ; return LBD ; } ~ { yylval = 3 ; return CON1 ; } & { yylval = 1 ; return CON2 ; } [|+] { yylval = 2 ; return CON2 ; } -> { yylval = 3 ; return CON2 ; } /* Mots-clés */ pred { return ID_PRED ; } cte { return ID_CTE ; } var { return ID_VAR ; } lf { return REQ_LF ; } defaut { return DCL_DEF ; } lex { return LEX ; } parse { return REQ_PARSE ; } /* Catégories : doivent correspondre à la liste des tokens */ /* %token N Np Vi Vt Det */ N { yylval = N ; return CAT ; } Np { yylval = Np ; return CAT ; } Vi { yylval = Vi ; return CAT ; } /* Autres identificateurs */ [a-z]+|[A-Z]+ { chaine_cour = malloc(strlen(yytext)+1) ; strcpy(chaine_cour, yytext) ; yylval = (int) chaine_cour ; return recherche_id(yytext) ; } [][().;?] { return yytext[0] ; } .|\n /* NOP */ ;