[Lldb-commits] [lldb] [lldb] Add binary multiplication, division, remainder to DIL (PR #187281)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Fri Apr 10 09:55:17 PDT 2026
================
@@ -155,15 +155,43 @@ ASTNodeUP DILParser::ParseExpression() { return ParseAdditiveExpression(); }
// Parse an additive_expression.
//
// additive_expression:
-// cast_expression {"+" cast_expression}
+// multiplicative_expression {"+" multiplicative_expression}
//
ASTNodeUP DILParser::ParseAdditiveExpression() {
- auto lhs = ParseCastExpression();
+ auto lhs = ParseMultiplicativeExpression();
assert(lhs && "ASTNodeUP must not contain a nullptr");
while (CurToken().IsOneOf({Token::plus, Token::minus})) {
Token token = CurToken();
m_dil_lexer.Advance();
+ auto rhs = ParseMultiplicativeExpression();
+ assert(rhs && "ASTNodeUP must not contain a nullptr");
+ lhs = std::make_unique<BinaryOpNode>(
+ token.GetLocation(), GetBinaryOpKindFromToken(token.GetKind()),
+ std::move(lhs), std::move(rhs));
+ }
+
+ return lhs;
+}
+
+// Parse a multiplicative_expression.
+//
+// multiplicative_expression:
+// cast_expression {"*" cast_expression}
+// cast_expression {"/" cast_expression}
+// cast_expression {"%" cast_expression}
+//
+ASTNodeUP DILParser::ParseMultiplicativeExpression() {
+ auto lhs = ParseCastExpression();
+
+ while (CurToken().IsOneOf({Token::star, Token::slash, Token::percent})) {
+ Token token = CurToken();
+ if (token.Is(Token::star) && m_mode != lldb::eDILModeFull) {
+ BailOut("binary multiplication (*) is allowed only in DIL full mode",
----------------
Michael137 wrote:
Could you explain why? Didn't quite understand from the PR description
https://github.com/llvm/llvm-project/pull/187281
More information about the lldb-commits
mailing list