diff options
author | Tom Tromey <tom@tromey.com> | 2021-04-16 16:34:07 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2021-04-16 16:34:08 -0600 |
commit | 3cbc7ac344cd6b500b54588a9099c037de58e75a (patch) | |
tree | d65283bae6379d5781766b52fb72a5b7b9dbe987 /bfd/aout64.c | |
parent | 458620aabb33d9b0efa61d0fb402c8d19e65eabd (diff) | |
download | gdb-3cbc7ac344cd6b500b54588a9099c037de58e75a.zip gdb-3cbc7ac344cd6b500b54588a9099c037de58e75a.tar.gz gdb-3cbc7ac344cd6b500b54588a9099c037de58e75a.tar.bz2 |
Rewrite the Rust expression parser
The Rust expression parser was written to construct its own AST, then
lower this to GDB expressions. I did this primarily because the old
expressions were difficult to work with; after rewriting those, I
realized I could remove the AST from the Rust parser.
After looking at this, I realized it might be simpler to rewrite the
parser. This patch reimplements it as a recursive-descent parser. I
kept a fair amount of the existing code -- the lexer is pulled in
nearly unchanged.
There are several benefits to this approach:
* The parser is shorter now (from 2882 LOC to 2351).
* The parser is just ordinary C++ code that can be debugged in the
usual way.
* Memory management in the parser is now straightforward, as
parsing methods simply return a unique pointer or vector.
This required a couple of minor changes to the test suite, as some
errors have changed.
While this passes the tests, it's possible there are lurking bugs,
particularly around error handling.
gdb/ChangeLog
2021-04-16 Tom Tromey <tom@tromey.com>
* rust-parse.c: New file.
* rust-exp.y: Remove.
* Makefile.in (COMMON_SFILES): Add rust-parse.c.
(SFILES): Remove rust-exp.y.
(YYFILES, local-maintainer-clean): Remove rust-exp.c.
gdb/testsuite/ChangeLog
2021-04-16 Tom Tromey <tom@tromey.com>
* gdb.rust/simple.exp: Change error text.
* gdb.rust/expr.exp: Change error text.
Diffstat (limited to 'bfd/aout64.c')
0 files changed, 0 insertions, 0 deletions