From 00689d3637b7a5caf682586a7b731cd6462e5236 Mon Sep 17 00:00:00 2001 From: Sofia Date: Tue, 28 Apr 2026 00:12:57 +0300 Subject: [PATCH] Parse unops --- src/codegen.cpp | 2 -- src/parsing.cpp | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index a34b6cf..5fe88c3 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -267,8 +267,6 @@ namespace AST { value = this->m_expr->codegen(builder, scope, allocator); } - std::cout << intended_ty->formatted() << std::endl; - std::vector idx_list{ }; idx_list.push_back(llvm::ConstantInt::get(builder.builder->getInt32Ty(), this->m_num)); diff --git a/src/parsing.cpp b/src/parsing.cpp index 01046b0..3b0472e 100644 --- a/src/parsing.cpp +++ b/src/parsing.cpp @@ -315,6 +315,15 @@ namespace parsing { new AST::DerefExpression(before_meta + inner.metadata(), std::move(expr)) }; } + else if (inner.peek().content == "+" && inner.peek(1).content == "+") { + inner.next(); + inner.next(); + auto expr = parse_primary_expression(inner, scope).unwrap(); + stream.m_position = inner.m_position; + return std::unique_ptr { + new AST::UnaryExpression(before_meta + inner.metadata(), std::move(expr), types::Unary::AddPrefix) + }; + } auto plain_expr = parse_plain_expression(inner, scope); while (inner.peek().content == "(" || inner.peek().content == "[" || inner.peek().content == ".") { @@ -350,6 +359,14 @@ namespace parsing { } } + if (inner.peek().content == "+" && inner.peek(1).content == "+") { + inner.next(); + inner.next(); + plain_expr = std::unique_ptr{ + new AST::UnaryExpression{before_meta + inner.metadata(), plain_expr.unwrap(), types::Unary::AddPostfix} + }; + } + stream.m_position = inner.m_position; return plain_expr;