On 12/5/06, Sean Walton <[EMAIL PROTECTED]> wrote:

 David Gay wrote:
On 12/5/06, Sean Walton <[EMAIL PROTECTED]> wrote:

I'm stumped.  I trying to figure out what pstate is and how to use it.
 Can anyone help?

 It's the parser state, as the name of its type ("parse_state") might
 have suggested. It's all in one structure to make it simple to make
 the parser reentrant (note that the parse function saves and restores
 pstate).

 As to the details of its contents, you'll need to look at the parser
 rules. Documentation on gcc internals (pre version 4) may or may not
 explain some of the weirdnesses there... (there's some amount of
 parser hackery in gcc's C grammar...).

 David Gay
 Thanks for the reply.
 I have added new production to the grammar to enable "intertype
declarations" (ITD).  One ITD involves adding a new variable to a component.
 I have tried to hook my grammar up to existing productions:

anesc_intertype:
         { testAspect = TRUE; } ANESC_INTERTYPE { inAspectITD = TRUE; }
anesc_declaration
             { inAspectITD = FALSE; $$ = $4; }
     ;

 anesc_declaration:
         fndef
     |    just_datadef
     ;
 I then test this with:

intertype int CommandAttrM.commandCounter;
 During the run (nesc compile), I get:

** **i**i**n**t**e**r**t**y**p**e** **i**n**t**
*[kind=674273160]Error: [28793f10] 674273160
 Assertion failed: (0), function parse_declarator, file semantics.c, line
763.
 The first list is debugging code I inserted which first displays the
char-by-char input stream and the "kind" value.  Clearly, the "spec->kind"
is bogus.  In fact, I discovered it to be uninitialized, and testing it as a
char* I get:

gdb> p (char*)spec->kind
 $1 = 0x28309788 "aspects/TestAspectM.anc"
 Conclusion: somehow, I believe that I am not setting up the "pstate"
correctly.  Do you have any ideas what I need to do?

Why do you assume that? W/o trying to debug your code for you, I will
suggest that you look at extdefs and check you are doing the magic
"$<u.telement>$ = NULL" assignment in an action before the use of
rules like fndef or just_datadef (it's necessary to make the setspecs
rule work when it's used at the beginning of a rule). However, I don't
think this is what's causing your problem, so you'll probably need to
get more friendly w/ gdb ;-)

David Gay
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to