feat: address expression parser with module resolution and pointer deref

Merge branch 'address-parser'. Adds AddressParser supporting:
- Hex arithmetic with +-*/ and operator precedence
- Module base resolution via <Module.exe> syntax
- Pointer dereference via [addr] syntax with nesting
- WinDbg backtick-separated addresses (7ff6`6cce0000)
- Formula persistence in project files and source switching
This commit is contained in:
IChooseYou
2026-02-21 09:12:11 -07:00
16 changed files with 675 additions and 122 deletions

View File

@@ -483,7 +483,7 @@ private slots:
QVERIFY(!fmt::validateBaseAddress("").isEmpty()); // empty
QVERIFY(!fmt::validateBaseAddress(" ").isEmpty()); // whitespace only - no hex digits
QVERIFY(!fmt::validateBaseAddress("0xGGGG").isEmpty());
QVERIFY(!fmt::validateBaseAddress("0x1000 * 2").isEmpty()); // multiplication not supported
QVERIFY(fmt::validateBaseAddress("0x1000 * 2").isEmpty()); // multiplication supported
QVERIFY(!fmt::validateBaseAddress("0x1000 ++ 0x100").isEmpty()); // double operator
QVERIFY(!fmt::validateBaseAddress("hello").isEmpty());
}
@@ -1028,7 +1028,7 @@ private slots:
// Test the validation function directly
QVERIFY(!fmt::validateBaseAddress("0x1000 ** 2").isEmpty());
QVERIFY(!fmt::validateBaseAddress("0x1000 / 2").isEmpty());
QVERIFY(fmt::validateBaseAddress("0x1000 / 2").isEmpty()); // division supported
QVERIFY(!fmt::validateBaseAddress("abc xyz").isEmpty());
// Original base should be unchanged