Add semantic passes
This commit is contained in:
@ -1,21 +1,21 @@
|
||||
#include <elna/source/driver.hpp>
|
||||
#include "parser.hpp"
|
||||
#include <elna/source/driver.h>
|
||||
#include "elna/source/semantic.h"
|
||||
#include "parser.hh"
|
||||
#include <sstream>
|
||||
|
||||
constexpr std::size_t pointer_size = 4;
|
||||
|
||||
int main()
|
||||
{
|
||||
elna::source::driver driver{ "-" };
|
||||
std::istringstream inp(R"(
|
||||
const world = 5, hello = 7;
|
||||
var x: int, y: boolean;
|
||||
var x: Int;
|
||||
|
||||
proc f();
|
||||
begin
|
||||
x := 8
|
||||
end;
|
||||
|
||||
begin
|
||||
while false do inc(5)
|
||||
end.
|
||||
)");
|
||||
|
||||
@ -33,6 +33,12 @@ int main()
|
||||
}
|
||||
return result;
|
||||
}
|
||||
auto symbol_table = elna::source::add_builtin_symbols();
|
||||
elna::source::name_analysis_visitor name_analysis_visitor{ symbol_table, "-", pointer_size };
|
||||
elna::source::type_analysis_visitor type_analysis_visitor{ symbol_table, "-", pointer_size };
|
||||
|
||||
name_analysis_visitor.visit(driver.tree.get());
|
||||
|
||||
for (auto& definition : driver.tree->definitions())
|
||||
{
|
||||
if (auto const_definition = dynamic_cast<elna::source::constant_definition *>(definition.get()))
|
Reference in New Issue
Block a user