aboutsummaryrefslogtreecommitdiff
path: root/gdb/expression.h
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2023-04-28 08:08:49 -0600
committerTom Tromey <tromey@adacore.com>2023-05-23 13:57:54 -0600
commitb8c03634d6537ee7ad068ab840b6e78483aaca80 (patch)
treeaf65690289d5f6db975f3318064a830d3f95e8ca /gdb/expression.h
parent562db568441ed0f7e258b843916c34572170cc6d (diff)
downloadfsf-binutils-gdb-b8c03634d6537ee7ad068ab840b6e78483aaca80.zip
fsf-binutils-gdb-b8c03634d6537ee7ad068ab840b6e78483aaca80.tar.gz
fsf-binutils-gdb-b8c03634d6537ee7ad068ab840b6e78483aaca80.tar.bz2
Introduce and use parser flags
This patch adds a new parser_flags type and changes the parser APIs to use it rather than a collection of 'int' and 'bool'. More flags will be added in subsquent patches.
Diffstat (limited to 'gdb/expression.h')
-rw-r--r--gdb/expression.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/gdb/expression.h b/gdb/expression.h
index 8d351b3..2e2d2a0 100644
--- a/gdb/expression.h
+++ b/gdb/expression.h
@@ -283,11 +283,27 @@ private:
const struct block *m_innermost_block;
};
+/* Flags that can affect the parsers. */
+
+enum parser_flag
+{
+ /* This flag is set if the expression is being evaluated in a
+ context where a 'void' result type is expected. Parsers are free
+ to ignore this, or to use it to help with overload resolution
+ decisions. */
+ PARSER_VOID_CONTEXT = (1 << 0),
+
+ /* This flag is set if a top-level comma terminates the
+ expression. */
+ PARSER_COMMA_TERMINATES = (1 << 1),
+};
+DEF_ENUM_FLAGS_TYPE (enum parser_flag, parser_flags);
+
/* From parse.c */
extern expression_up parse_expression (const char *,
innermost_block_tracker * = nullptr,
- bool void_context_p = false);
+ parser_flags flags = 0);
extern expression_up parse_expression_with_language (const char *string,
enum language lang);
@@ -314,7 +330,8 @@ extern expression_up parse_expression_for_completion
(const char *, std::unique_ptr<expr_completion_base> *completer);
extern expression_up parse_exp_1 (const char **, CORE_ADDR pc,
- const struct block *, int,
+ const struct block *,
+ parser_flags flags,
innermost_block_tracker * = nullptr);
/* From eval.c */