34 lines
597 B
C++
34 lines
597 B
C++
#include "StaticPass.hpp"
|
|
#include "lib/Node.hpp"
|
|
|
|
namespace roza
|
|
{
|
|
/*explicit*/ StaticPass::StaticPass(StatusLog& log)
|
|
: m_log { log }
|
|
{
|
|
}
|
|
|
|
/*virtual*/ StaticPass::~StaticPass()
|
|
{
|
|
}
|
|
|
|
void StaticPass::check(std::shared_ptr<Node> root)
|
|
{
|
|
switch (root->type())
|
|
{
|
|
case NODE_INT: break;
|
|
|
|
case NODE_PROG:
|
|
case NODE_INSTR: {
|
|
for (size_t i=0; i<root->size(); i++)
|
|
{
|
|
check(root->child(i));
|
|
}
|
|
} break;
|
|
|
|
default:
|
|
m_log.fatal(root->loc(), "cannot check node '" + root->string() + "'");
|
|
}
|
|
}
|
|
}
|