Bonjour,
J'ai une chaine de caractère a parser pour en extraire les données et les stocker dans une structure.
La ligne étant plutôt compliquée, j'ai décidé de dégainer mes souvenirs de fac avec lex/yacc.
La ligne est du type:
operator = <operator_name> ( <liste_de_parametres> ) ? <liste_d_actions> : <liste_d_actions>
Les operators et les actions prennent évidemment un nombre différent et variable de paramètres histoire de corser la chose.
Mes fichiers lex et yacc, analysent sans problème ma chaine de caracteres mais je ne sais pas comment remplir ma structure de données.
en effet, tous les exemples que je trouve sur le net utilisent un type basique pour la variable yylval.
Dans mon cas, j'ai une structure plutôt complexe du type (exemple non réel mais tres representatif):
Bref, j'aimerais pouvoir travailler directement dans yacc avec un pointeur sur ma structure T_data et non avec un simple int ou, soyons fou un enum (exemple le plus compliqué que j'ai trouvé)
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 typedef struct { char operator_name[ 80 ]; T_opParam operator_params; int nb_action1; T_action actions1[ 10 ]; int nb_action2; T_action actions2[ 10 ]; } T_data; typedef struct { char param1[ 80 ]; int param2; int param3; } T_opParam; typedef struct { ... } T_action;
Je n'arrive pas trop à m'en sortir et toute idée sera la bienvenue.
Merci d'avance
Xavier
Partager