Hello,

> Q: The signature is updated with __tabversion__, method, the start symbol,
> precedence rules and the doc-strings of grammar rules. I'm missing the token 
> list
> and the names of the grammar rules. Why is this? (There may be other things 
> missing?)

> A: The signature only includes things that affect the underlying parsing 
> tables.  
> Doc strings already have all of the grammar rules, token names, and rule 
> names. 
> The start symbol and precedence rules are the only other things that would
> change the underlying table.

OK, I understand that the doc-strings contain the rule names, but I'm still 
missing the
actual names of the functions that the doc-strings belong to. The parse table 
file
contains those names (as well as file names). If I only rename a p_* function, 
the
parse table file becomes invalid as it refers to the old name, not the new name.

Dennis



David Beazley wrote:

>I can some answer some questions about table regeneration and optimize mode in 
>yacc.
>
>Q: What we see is that the parse table file is imported and then, if 'optimize'
>is enabled, it doesn't even matter if the digest matches or not... I think this
>is a bug in the implementation? I think the 'or' in line 2615 should be an 
>'and'?
>
>A:
>
>The whole point of yacc optimized mode is mainly to greatly reduce startup time
>and parsing performance. In this mode, yacc doesn't even compute the signature 
>or
>attempt to validate the table file at all.  It simply loads it and runs with 
>it.
>Therefore, this is not a bug, but intended behavior.  It was always imagined 
>that
>one would fully debug their grammar and get things working in normal mode.  
>Then,
>at the very end, you could enable optimize mode.
>
>Q: Why is the import executed, even if we don't use optimized mode?
>
>A: 
>
>yacc always needs to load its parsing tables from a module, regardless of the 
>mode.
>
>Q: The signature is updated with __tabversion__, method, the start symbol,
>precedence rules and the doc-strings of grammar rules. I'm missing the token 
>list
>and the names of the grammar rules. Why is this? (There may be other things 
>missing?)
>
>A:
>
>The signature only includes things that affect the underlying parsing tables.  
>Doc strings already have all of the grammar rules, token names, and rule 
>names. 
> The start symbol and precedence rules are the only other things that would
>change the underlying table.
>
>Q:   The first time lr_read_tables is called (line 2705) in the yacc function,
>the signature only contains the __tabversion__, method and start symbol. I 
>wonder
>if it can ever match the signature stored in the parse table file? (note that 
>due
>to the 'or' in line 2615, the signature check if not even checked if optimize 
>is
>enabled)
>
>A:
>
>As noted above, in optimized mode there is no validation so the fact that the
>signature contains anything at all is merely incidental.
>
>Followup:
>
>Just as a note, I am unlikely to change this implementation of optimize mode. 
>Startup time is often a critical issue in compilers/parsers.  I really do want 
>to
>eliminate as much extra processing as possible in this mode.
>
>Cheers,
>Dave
>
>
>
>
>  
>


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"ply-hack" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/ply-hack?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to