diff options
author | Tom Tromey <tromey@adacore.com> | 2023-04-28 08:08:49 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-05-23 13:57:54 -0600 |
commit | b8c03634d6537ee7ad068ab840b6e78483aaca80 (patch) | |
tree | af65690289d5f6db975f3318064a830d3f95e8ca /gdb/expression.h | |
parent | 562db568441ed0f7e258b843916c34572170cc6d (diff) | |
download | fsf-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.h | 21 |
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 */ |