187 lines
3.0 KiB
C++
187 lines
3.0 KiB
C++
#include "ast_resolver.hpp"
|
|
|
|
namespace dsp {
|
|
|
|
namespace ast {
|
|
|
|
// expressions
|
|
|
|
void resolver_t::visit(const binary_t * binary) const
|
|
{
|
|
(void)binary;
|
|
}
|
|
|
|
void resolver_t::visit(const grouping_t * grouping) const
|
|
{
|
|
(void)grouping;
|
|
}
|
|
|
|
void resolver_t::visit(const identifier_t * identifier) const
|
|
{
|
|
(void)identifier;
|
|
}
|
|
|
|
void resolver_t::visit(const literal_t * literal) const
|
|
{
|
|
(void)literal;
|
|
}
|
|
|
|
void resolver_t::visit(const unary_t * unary) const
|
|
{
|
|
(void)unary;
|
|
}
|
|
|
|
// instructions
|
|
|
|
void resolver_t::visit(const op::alu_t * alu) const
|
|
{
|
|
(void)alu;
|
|
}
|
|
|
|
void resolver_t::visit(const op::mov_ram_x_t * mov_ram_x) const
|
|
{
|
|
(void)mov_ram_x;
|
|
}
|
|
|
|
void resolver_t::visit(const op::mov_mul_p_t * mov_mul_p) const
|
|
{
|
|
(void)mov_mul_p;
|
|
}
|
|
|
|
void resolver_t::visit(const op::mov_ram_p_t * mov_ram_p) const
|
|
{
|
|
(void)mov_ram_p;
|
|
}
|
|
|
|
void resolver_t::visit(const op::mov_ram_y_t * mov_ram_y) const
|
|
{
|
|
(void)mov_ram_y;
|
|
}
|
|
|
|
void resolver_t::visit(const op::clr_a_t * clr_a) const
|
|
{
|
|
(void)clr_a;
|
|
}
|
|
|
|
void resolver_t::visit(const op::mov_alu_a_t * mov_alu_a) const
|
|
{
|
|
(void)mov_alu_a;
|
|
}
|
|
|
|
void resolver_t::visit(const op::mov_ram_a_t * mov_ram_a) const
|
|
{
|
|
(void)mov_ram_a;
|
|
}
|
|
|
|
void resolver_t::visit(const op::mov_imm_d1_t * mov_imm_d1) const
|
|
{
|
|
(void)mov_imm_d1;
|
|
}
|
|
|
|
void resolver_t::visit(const op::mov_ram_d1_t * mov_ram_d1) const
|
|
{
|
|
(void)mov_ram_d1;
|
|
}
|
|
|
|
void resolver_t::visit(const op::control_word_t * control_word) const
|
|
{
|
|
(void)control_word;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const load::mvi_t * mvi) const
|
|
{
|
|
(void)mvi;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const load::mvi_cond_t * mvi_cond) const
|
|
{
|
|
(void)mvi_cond;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const dma::src_d0_imm_t * src_d0_imm) const
|
|
{
|
|
(void)src_d0_imm;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const dma::d0_dst_imm_t * d0_dst_imm) const
|
|
{
|
|
(void)d0_dst_imm;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const dma::src_d0_ram_t * src_d0_ram) const
|
|
{
|
|
(void)src_d0_ram;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const dma::d0_dst_ram_t * d0_dst_ram) const
|
|
{
|
|
(void)d0_dst_ram;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const jump::jmp_t * jmp) const
|
|
{
|
|
(void)jmp;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const jump::jmp_cond_t * jmp_cond) const
|
|
{
|
|
(void)jmp_cond;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const loop::btm_t * btm) const
|
|
{
|
|
(void)btm;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const loop::lps_t * lps) const
|
|
{
|
|
(void)lps;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const end::end_t * end) const
|
|
{
|
|
(void)end;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const end::endi_t * endi) const
|
|
{
|
|
(void)endi;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const nop::nop_t * nop) const
|
|
{
|
|
(void)nop;
|
|
pc.increment();
|
|
}
|
|
|
|
void resolver_t::visit(const assign_t * assign) const
|
|
{
|
|
(void)assign;
|
|
}
|
|
|
|
void resolver_t::visit(const label_t * label) const
|
|
{
|
|
if (addresses.contains(label->name.lexeme)) {
|
|
throw std::runtime_error("label redefinition is not allowed");
|
|
} else {
|
|
addresses.insert({label->name.lexeme, pc.value});
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|