25 #include "pips_config.h"
59 pips_debug(5,
"initializing macro-expansion support stuff\n");
74 pips_debug(5,
"closing macro-expansion support stuff\n");
132 "It may be an undeclared array.\n");
231 list lactuals, lformals;
260 for (; !
ENDP(lactuals);
POP(lactuals),
POP(lformals))
expression copy_expression(expression p)
EXPRESSION.
syntax copy_syntax(syntax p)
SYNTAX.
void free_expression(expression p)
void free_syntax(syntax p)
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
#define gen_recurse(start, domain_number, flt, rwt)
void gen_recurse_stop(void *obj)
Tells the recursion not to go in this object.
void gen_null(__attribute__((unused)) void *unused)
Ignore the argument.
bool gen_true(__attribute__((unused)) gen_chunk *unused)
Return true and ignore the argument.
#define ENDP(l)
Test if a list is empty.
#define POP(l)
Modify a list pointer to point on the next element of the list.
#define NIL
The empty list (nil in Lisp)
size_t gen_length(const list l)
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
#define CAR(pcons)
Get the value of the first element of a list.
void gen_free_list(list l)
free the spine of the list
bool gen_in_list_p(const void *vo, const list lx)
tell whether vo belongs to lx
static expression s_init
must take care not to substitute in an inserted expression
static int current_macros_size
static list already_subs
of expression
void parser_substitute_all_macros(statement s)
void parser_close_macros_support(void)
bool parser_entity_macro_p(entity e)
void parser_substitute_all_macros_in_expression(expression e)
void parser_macro_expansion(expression e)
static bool call_flt(call c)
static void expr_rwt(expression e)
static bool some_call
is there a call to some untrusted function?
void reset_substitute_expression_in_expression(void)
void parser_init_macros_support(void)
next available chunk
static int current_macro_index
void parser_add_a_macro(call c, expression e)
static bool expr_flt(expression e)
static bool untrusted_call_p(expression e)
static macro_t * current_macros
static macro_t * find_entity_macro(entity e)
static void substitute_expression_in_expression(expression tree, expression initial, expression replacement)
substitutes occurences of initial by replacement in tree
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_user_warning
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
void remove_from_called_modules(entity e)
macros are added, although they should not have been.
bool same_entity_p(entity e1, entity e2)
predicates on entities
const char * module_local_name(entity e)
Returns the module local user name.
bool expression_call_p(expression e)
bool expression_equal_p(expression e1, expression e2)
Syntactic equality e1==e2.
bool expression_reference_p(expression e)
Test if an expression is a reference.
#define expression_domain
newgen_execution_domain_defined
#define syntax_reference(x)
#define value_intrinsic_p(x)
#define value_constant_p(x)
#define call_domain
newgen_callees_domain_defined
#define EXPRESSION(x)
EXPRESSION.
#define expression_undefined
#define value_symbolic_p(x)
#define reference_indices(x)
#define call_arguments(x)
#define expression_syntax(x)
#define entity_initial(x)
The structure used to build lists in NewGen.
bool ParserError(const char *f, const char *m)