%{
#include <string>
#include "apps_conf_flex.h"
using namespace std;
struct mod_r_test
{
int pri;
mod_r_test *next;
};
int yyerror(const char *errmsg);
void print_test(mod_r_test* mods);
%}
%union{
string* qstr;
int num;
mod_r_test *r_test;
}
%token <qstr> QSTR ID
%token <num> NUM WORKDIR PRI MOD
%type <r_test> mod_items mod_item app
%%
app:
mod_items
{
print_test($$);
//printf("app:%d\n",$$);
};
mod_items:
mod_item mod_items
{
//printf("mod_item:%d,%d\n",$1,$2);
$1->next = $2; $$ = $1;
}
|mod_item
{
//printf("mod_items:%d\n",$$);
};
mod_item:
PRI '=' NUM
{
$$ = new mod_r_test;
$$->pri=$3;
$$->next=0;
//printf("pri:%d\n",$$);
};
%%
void print_test(mod_r_test* mods){
for(mod_r_test *head=mods;head!=0;head =head->next){
printf("pri=%d\n",head->pri);
}
}
int yyerror(const char *errmsg){
printf("%s: %s ,at line %d\n",errmsg,yytext,yylineno);
}
#include <string>
#include "apps_conf_flex.h"
using namespace std;
struct mod_r_test
{
int pri;
mod_r_test *next;
};
int yyerror(const char *errmsg);
void print_test(mod_r_test* mods);
%}
%union{
string* qstr;
int num;
mod_r_test *r_test;
}
%token <qstr> QSTR ID
%token <num> NUM WORKDIR PRI MOD
%type <r_test> mod_items mod_item app
%%
app:
mod_items
{
print_test($$);
//printf("app:%d\n",$$);
};
mod_items:
mod_item mod_items
{
//printf("mod_item:%d,%d\n",$1,$2);
$1->next = $2; $$ = $1;
}
|mod_item
{
//printf("mod_items:%d\n",$$);
};
mod_item:
PRI '=' NUM
{
$$ = new mod_r_test;
$$->pri=$3;
$$->next=0;
//printf("pri:%d\n",$$);
};
%%
void print_test(mod_r_test* mods){
for(mod_r_test *head=mods;head!=0;head =head->next){
printf("pri=%d\n",head->pri);
}
}
int yyerror(const char *errmsg){
printf("%s: %s ,at line %d\n",errmsg,yytext,yylineno);
}