[Flex/Bison] problème avec la récursivité
Bonjour à tous je cherche à faire un validateur de fichiers css et je passe par flex et bison pour réaliser ce projet, cependant j'éprouve quelques difficultés sur certaine fonctions pour lesquels il me faudrait utiliser la récursivité je vous présente ca à travers mes fichiers j'intègre uniquement les parties nécessaires évidemment :
editeur_css.l
Code:
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
|
%option noyywrap
%{
#include<stdio.h>
#include<string.h>
#include<gtk/gtk.h>
GList *list = NULL;
%}
THIN [Tt][Hh][Ii][Nn]
MEDIUM [Mm][Ee][Dd][Ii][Uu][Mm]
THICK [Tt][Hh][Ii][Cc][Kk]
INHERIT [Ii][Nn][Hh][Ee][Rr][Ii][Tt]
SPACE (" "|"\t"|"\n"*)*
VIRG ","|{SPACE}","|","{SPACE}|{SPACE}","{SPACE}
PTS ":"|{SPACE}":"|":"{SPACE}|{SPACE}":"{SPACE}
%%
{THIN} {g_list_append(list,yytext); return THIN;}
{MEDIUM} {g_list_append(list,yytext); return MEDIUM;}
{THICK} {g_list_append(list,yytext); return THICK;}
{SPACE} {g_list_append(list,yytext); return SPACE;}
{VIRG} {g_list_append(list,yytext); return VIRG;}
{PTS} {g_list_append(list,yytext); return PTS;}
%% |
editeur_css.y
Code:
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
|
%{
#define YYSTYPE double
#include <stdio.h>
#include "lex.yy.c"
void yyerror ();
gchar *chaine = NULL;
%}
%token THIN
%token MEDIUM
%token THICK
%token INHERIT
%token SPACE
%token VIRG
%token PTS
%%
%start Depart
.........
border_width_b : THIN VIRG | THICK VIRG | MEDIUM VIRG
border_width_a : border_width_b border_with_a |
border_width : BORDER_WIDTH PTS border_width_a SPACE
| BORDER_WIDTH PTS INHERIT SPACE
%% |
mon fichier flex passe très bien alors que mon fichier bison lui pose problème et affiche l'erreur :
Code:
1 2
|
editeur_css.y: le symbole border_with_a est utilisé mais ce n'est pas un terminal et il ne possède pas de règle |
Je débute en flex et bison je ne connais pas encore toutes les subtilités qu'offre ces outils mais avec votre aide je vais surement y arriver :D Merci d'avance !!