"Eric Fisher" <[EMAIL PROTECTED]> writes: > Seems the question has been solved, here is the changes of > treelang/parse.y, just for fun :-) > > $ diff treelang/parse.y treelang/parse_new.y -u > --- treelang/parse.y 2004-01-08 15:50:46.000000000 +0800 > +++ treelang/parse_new.y 2006-04-13 18:00:34.390625000 +0800 > @@ -48,6 +48,7 @@ > #include "tm.h" > #include "diagnostic.h" > #include "timevar.h" > +#include "tree.h" > > #include "treelang.h" > #include "treetree.h" > @@ -182,7 +183,7 @@ > ; > > variable_def: > -storage typename NAME init_opt SEMICOLON { > +storage_opt typename NAME init_opt SEMICOLON { > struct prod_token_parm_item* tok; > struct prod_token_parm_item *prod; > tok = $3;
Don't you have to deal with $1 being NULL? > @@ -225,6 +226,15 @@ > } > ; > > +storage_opt: > +/* Nil. */ { > + $$ = 0; > +} > +|storage { > + $$ = $1; > +} > +; > + > storage: > STATIC > |AUTOMATIC > @@ -254,7 +264,7 @@ > ; > > function_prototype: > -storage typename NAME LEFT_PARENTHESIS parameters RIGHT_PARENTHESIS SEMICOLON > > +storage_opt typename NAME LEFT_PARENTHESIS parameters RIGHT_PARENTHESIS SEMIC > ON { > struct prod_token_parm_item* tok; > struct prod_token_parm_item *prod; > struct prod_token_parm_item *type; > @@ -951,6 +961,11 @@ > { > struct prod_token_parm_item* stg_class; > stg_class = STORAGE_CLASS_TOKEN (prod); > + if(stg_class==NULL_TREE) > + { > + STORAGE_CLASS (prod) = EXTERNAL_DEFINITION_STORAGE; > + return; > + } > switch (stg_class->type) > { > case STATIC: > -- Thanks, Jim http://www.csclub.uwaterloo.ca/~ja2morri/ http://phython.blogspot.com http://open.nit.ca/wiki/?page=jim