X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/7c0c61812d534683d10234082e6e6adee6eb81a6..a17187e56386747a9b4d9633c3d116c2087f2b8b:/src/scan-code.h?ds=inline diff --git a/src/scan-code.h b/src/scan-code.h index c5f14fd5..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 @@ -163,13 +172,9 @@ void code_scanner_last_string_free (void); * - None. * \post * - 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. + * \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 (struct symbol_list *r); - #endif /* !SCAN_CODE_H_ */