Parse unops
This commit is contained in:
parent
1103efe6fe
commit
00689d3637
@ -267,8 +267,6 @@ namespace AST {
|
|||||||
value = this->m_expr->codegen(builder, scope, allocator);
|
value = this->m_expr->codegen(builder, scope, allocator);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << intended_ty->formatted() << std::endl;
|
|
||||||
|
|
||||||
std::vector<llvm::Value*> idx_list{ };
|
std::vector<llvm::Value*> idx_list{ };
|
||||||
idx_list.push_back(llvm::ConstantInt::get(builder.builder->getInt32Ty(), this->m_num));
|
idx_list.push_back(llvm::ConstantInt::get(builder.builder->getInt32Ty(), this->m_num));
|
||||||
|
|
||||||
|
|||||||
@ -315,6 +315,15 @@ namespace parsing {
|
|||||||
new AST::DerefExpression(before_meta + inner.metadata(), std::move(expr))
|
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<AST::Expression> {
|
||||||
|
new AST::UnaryExpression(before_meta + inner.metadata(), std::move(expr), types::Unary::AddPrefix)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
auto plain_expr = parse_plain_expression(inner, scope);
|
auto plain_expr = parse_plain_expression(inner, scope);
|
||||||
while (inner.peek().content == "(" || inner.peek().content == "[" || inner.peek().content == ".") {
|
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<AST::Expression>{
|
||||||
|
new AST::UnaryExpression{before_meta + inner.metadata(), plain_expr.unwrap(), types::Unary::AddPostfix}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
stream.m_position = inner.m_position;
|
stream.m_position = inner.m_position;
|
||||||
return plain_expr;
|
return plain_expr;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user