Use the new code_props interface in parse-gram.y.

* src/parse-gram.y (prologue_declaration, braceless, epilogue.opt):
Update all uses of translate_* functions to use the new code_props
interface and to use gram_scanner_last_string_free and
code_scanner_last_string_free where possible.
(grammar_declaration): symbol_list_destructor_set and
symbol_list_printer_set now perform the translation, so don't do it
here.  Use gram_scanner_last_string_free where possible.
* src/scan-code.h, src/scan-code.l (translate_symbol_action,
translate_code): Remove, no longer used.
* src/symlist.h, src/symlist.c (symbol_list_destructor_set,
symbol_list_printer_set): Perform code translation here rather than
depending on the caller to do so.

* src/symlist.h (struct symbol_list): Correct some documentation typos.
* src/scan-gram.h (gram_last_string): Remove declaration.
* src/scan-gram.l (last_string): Declare it static.
This commit is contained in:
Joel E. Denny
2007-01-03 05:14:57 +00:00
parent 28e52c0d62
commit 7c0c61812d
10 changed files with 382 additions and 330 deletions

View File

@@ -162,22 +162,14 @@ void code_scanner_last_string_free (void);
* \pre
* - None.
* \post
* - All dynamic memory allocated during any previous invocations of
* \c code_props_translate_code, \c translate_rule_action,
* \c translate_symbol_action, and \c translate_code has been freed. All
* \c code_props instances may now be invalid.
* - All dynamic memory allocated during invocations of
* \c code_props_translate_code or \c translate_rule_action (if any) has
* been freed. All \c code_props instances may now be invalid.
*/
void code_scanner_free (void);
/* The action of the rule R contains $$, $1 etc. referring to the values
of the rule R. */
char const *translate_rule_action (symbol_list *r);
/* The action A refers to $$ and @$ only, referring to a symbol. */
char const *translate_symbol_action (char const *a, location l);
/* The action contains no special escapes, just protect M4 special
symbols. */
char const *translate_code (char const *a, location l);
char const *translate_rule_action (struct symbol_list *r);
#endif /* !SCAN_CODE_H_ */