2009-12-05 63 views
0

我在我的yacc文件中有這個。如何將結構傳遞給yacc文件中的函數?

var_declaration : type_specifier ID ';' {$2->args = ""; $2->value = 0; $2->arraysize = 0; $2->type = "variable";} 

上面的一切工作。

我想添加到它。

fn($2); 

從函數內部,我想做這樣的東西。

fn(struct symtab sp) 
    { 
    sp->value = 0; 
    } 

但是,當我試圖編譯程序我得到這個錯誤:

error: invalid type argument of ‘->’ (have ‘struct symtab')

+0

你可以顯示不工作的代碼的例子嗎? yacc應該只是將代碼中的大括號放在大括號中。 – 2009-12-05 08:58:04

回答

6

我猜你的功能應該是

fn(struct symtab* sp) 

,而不是

fn(struct symtab sp) 

和順便說一句,因爲2美元是工會我不認爲

$2->args = ""; $2->value = 0; $2->arraysize = 0; 

是正確的。 而

$2->type = "variable"; 

無效。