2011-06-07 104 views
0

有沒有人在flex和野牛上工作?使用flex和野牛的問題

我有他們。我的一個實例上運行它,但它顯示了沒有野牛,

例如:在.L文件撓我定義的ID,並把{printf的「ID」}它。

和野牛我定義是這樣的:

id_list  : ID   {printf("id-list::=id\n");} 
    | id_list ',' ID  {printf("id-list::=<id-list>,id\n");} 

但是當我運行MAIN.EXE當我輸入的ID,它只是顯示ID(不應該將其打印ID列表:: = ID ???? ) 我知道我沒有解釋清楚,如果我錯過了什麼,請說我或說我把代碼。

+1

我重新標記這個從Adobe的Flex到GNU-FLEX;因爲我不認爲這個問題與Adobe Flex Development有關。 – JeffryHouser 2011-06-07 12:30:43

+0

adobe flex是不正確的,謝謝 – Arash 2011-06-07 13:50:43

回答

1

這裏有幾件事情可能是錯誤的。首先是錯誤的是printf。 Printf缺少%s,所以它只會打印您的文本。繼承人我怎麼會做它

id_list: 
        ID  { $$ = id_list(0, $1); } 
    | id_list ',' ID  { $$ = id_list($1, $2); } 

在C文件

IdList* id_list(IdList*p, ID*pp) { 
    //pp == yylval in this case a c-string from strdup 
    printf("id_list: %X %s", p, pp); //i rather set a breakpoint instead 
    if(p==0) p=new IdList; 
    p->deque.push_back(pp); 
    return p; 
} 

在lex文件

//makes a copy bc yytext will be reused for other things 
....  { yylval=strdup(yytext); return ID; }