X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/28e52c0d622b3017e14d2cf2e526238aa2cfd6ef..6cf3716c3166d6d41cdbeea45d018b1760184421:/src/scan-code.h diff --git a/src/scan-code.h b/src/scan-code.h index a6e1fc13..3fa5ea9a 100644 --- a/src/scan-code.h +++ b/src/scan-code.h @@ -1,12 +1,12 @@ /* Bison code properties structure and scanner. - Copyright (C) 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. - This program is free software; you can redistribute it and/or modify + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -15,15 +15,13 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301 USA -*/ + along with this program. If not, see . */ #ifndef SCAN_CODE_H_ # define SCAN_CODE_H_ # include "location.h" +# include "named-ref.h" struct symbol_list; @@ -65,8 +63,18 @@ typedef struct code_props { */ bool is_value_used; + /** + * \c true iff this code is an action that is not to be deferred in + * a non-deterministic parser. + */ + bool is_predicate; + + /** \c NULL iff \c code_props::kind is not \c CODE_PROPS_RULE_ACTION. */ struct symbol_list *rule; + + /* Named reference. */ + named_ref *named_ref; } code_props; /** @@ -79,7 +87,7 @@ void code_props_none_init (code_props *self); /** Equivalent to \c code_props_none_init. */ #define CODE_PROPS_NONE_INIT \ - {CODE_PROPS_NONE, NULL, EMPTY_LOCATION_INIT, false, NULL} + {CODE_PROPS_NONE, NULL, EMPTY_LOCATION_INIT, false, false, NULL, NULL} /** Initialized by \c CODE_PROPS_NONE_INIT with no further modification. */ extern code_props const code_props_none; @@ -132,7 +140,8 @@ void code_props_symbol_action_init (code_props *self, char const *code, * - The caller frees \c rule. */ void code_props_rule_action_init (code_props *self, char const *code, - location code_loc, struct symbol_list *rule); + location code_loc, struct symbol_list *rule, + named_ref *name, bool is_predicate); /** * \pre @@ -162,22 +171,10 @@ 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 (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); - #endif /* !SCAN_CODE_H_ */