/* Parse expressions for GDB.
- Copyright (C) 1986-2019 Free Software Foundation, Inc.
+ Copyright (C) 1986-2020 Free Software Foundation, Inc.
Modified from expread.y by the Department of Computer Science at the
State University of New York at Buffalo, 1991.
operator_length (const struct expression *expr, int endpos, int *oplenp,
int *argsp)
{
- expr->language_defn->la_exp_desc->operator_length (expr, endpos,
- oplenp, argsp);
+ expr->language_defn->expression_ops ()->operator_length (expr, endpos,
+ oplenp, argsp);
}
/* Default value for operator_length in exp_descriptor vectors. */
break;
case OP_FUNCALL:
- case OP_F77_UNDETERMINED_ARGLIST:
oplen = 3;
args = 1 + longest_to_int (expr->elts[endpos - 2].longconst);
break;
try
{
- lang->la_parser (&ps);
+ lang->parser (&ps);
}
catch (const gdb_exception &except)
{
if (out_subexp)
*out_subexp = subexp;
- lang->la_post_parser (&result, void_context_p, ps.parse_completion,
- tracker);
+ lang->post_parser (&result, void_context_p, ps.parse_completion, tracker);
if (expressiondebug)
dump_prefix_expression (result.get (), gdb_stdlog);
return value_type (val);
}
-/* A post-parser that does nothing. */
-
-void
-null_post_parser (expression_up *exp, int void_context_p, int completin,
- innermost_block_tracker *tracker)
-{
-}
-
/* Parse floating point value P of length LEN.
Return false if invalid, true if valid.
The successfully parsed number is stored in DATA in
return 1;
/* Check objfile where is placed the code touching the variable. */
- objfile = lookup_objfile_from_block (block);
+ objfile = block_objfile (block);
type = SYMBOL_TYPE (symbol);
}
gdb_assert (oplen > 0);
pos = endpos - oplen;
- if (exp->language_defn->la_exp_desc->operator_check (exp, pos,
- objfile_func, data))
+ if (exp->language_defn->expression_ops ()->operator_check (exp, pos,
+ objfile_func,
+ data))
return 1;
endpos = pos;
}
}
+void _initialize_parse ();
void
-_initialize_parse (void)
+_initialize_parse ()
{
add_setshow_zuinteger_cmd ("expression", class_maintenance,
&expressiondebug,