23#if !defined (PARSER_DEFS_H)
24#define PARSER_DEFS_H 1
70 return expout->language_defn;
77 expout->op = std::move (op);
114 gdb::unique_xmalloc_ptr<char>
name)
119 gdb_assert (
code == TYPE_CODE_ENUM
120 ||
code == TYPE_CODE_UNION
121 ||
code == TYPE_CODE_STRUCT);
147 const struct block *context_block,
148 CORE_ADDR context_pc,
213 template<
typename T,
typename... Arg>
216 m_operations.emplace_back (
new T (std::forward<Arg> (args)...));
241 std::vector<expr::operation_up> result (n);
242 for (
int i = 1; i <= n; ++i)
243 result[n - i] =
pop ();
252 using namespace expr;
254 push (std::move (v));
264 push (expr::make_operation<T> (std::move (lhs), std::move (rhs)));
337 void update (
const struct block *b, innermost_block_tracker_types t);
414 const struct type *
type, gdb_byte *data);
415extern bool fits_in_type (
int n_sign, ULONGEST n,
int type_bits,
virtual bool complete(struct expression *exp, completion_tracker &tracker)
innermost_block_tracker_types m_types
innermost_block_tracker(innermost_block_tracker_types types=INNERMOST_BLOCK_FOR_SYMBOLS)
void update(const struct block *b, innermost_block_tracker_types t)
void update(const struct block_symbol &bs)
const struct block * m_innermost_block
const struct block * block() const
std::unique_ptr< expression > expression_up
@ INNERMOST_BLOCK_FOR_SYMBOLS
static void ATTRIBUTE_PRINTF(1, 0)
std::unique_ptr< operation > operation_up
bool parse_float(const char *p, int len, const struct type *type, gdb_byte *data)
bool fits_in_type(int n_sign, ULONGEST n, int type_bits, bool type_signed_p)
const char * find_template_name_end(const char *)
void parser_fprintf(FILE *, const char *,...) ATTRIBUTE_PRINTF(2
std::string copy_name(struct stoken)
void bool exp_uses_objfile(struct expression *exp, struct objfile *objfile)
const struct block * block
DISABLE_COPY_AND_ASSIGN(expr_builder)
void set_operation(expr::operation_up &&op)
const struct language_defn * language()
struct gdbarch * gdbarch()
ATTRIBUTE_UNUSED_RESULT expression_up release()
expr_builder(const struct language_defn *lang, struct gdbarch *gdbarch)
expr::structop_base_operation * m_op
bool complete(struct expression *exp, completion_tracker &tracker) override
expr_complete_structop(expr::structop_base_operation *op)
gdb::unique_xmalloc_ptr< char > m_name
expr_complete_tag(enum type_code code, gdb::unique_xmalloc_ptr< char > name)
bool complete(struct expression *exp, completion_tracker &tracker) override
void push_new(Arg... args)
const CORE_ADDR expression_context_pc
const struct block *const expression_context_block
std::vector< expr::operation_up > pop_vector(int n)
std::unique_ptr< expr_completion_base > m_completion_state
std::vector< expr::operation_up > m_operations
void push_dollar(struct stoken str)
void mark_completion(std::unique_ptr< expr_completion_base > completer)
void push_symbol(const char *name, block_symbol sym)
innermost_block_tracker * block_tracker
std::vector< int > m_funcall_chain
void mark_completion_tag(enum type_code tag, const char *ptr, int length)
DISABLE_COPY_AND_ASSIGN(parser_state)
void push_c_string(int, struct stoken_vector *vec)
void push(expr::operation_up &&op)
parser_state(const struct language_defn *lang, struct gdbarch *gdbarch, const struct block *context_block, CORE_ADDR context_pc, int comma, const char *input, bool completion, innermost_block_tracker *tracker, bool void_p)
void mark_struct_expression(expr::structop_base_operation *op)
struct typed_stoken * tokens