c - What is the scope of yacc/bison actions? -
i'm attempting write (relatively) simple config file parser in flex/bison. basic idea bison grammar uses c functions organize parsed data series of c structs. i'd happy post code if thinks necessary answer question, comment.
the issue i'm running involves scope of procedures within bison actions. example, if have like:
set : ntok name { section *sec init_s(sec, $2); add_s(cf, sec); } shouldn't sec available in later rule of grammar use? i'm getting error: 'sec' undeclared when try call argument again later on. can enlighten me?
all code generated actions in bison in own scope (iirc, generated code wraps in curly-braces enforce this). if want make data globally available other actions, you'll need explicitly declare global variable somewhere (perhaps @ top of flex or bison script?), write variable. rationale behind if every variable in action implicitly global, or @ least readable other actions, easy accidentally recycle garbage data when meant creating new data.
Comments
Post a Comment