ppc-lang/src/compiler/treeifier/ast/ast.cc

36 lines
1.2 KiB
C++

#include "compiler/treeifier/ast.hh"
using namespace ppc;
using namespace ppc::data;
using namespace ppc::lang;
using namespace ppc::comp::tree::ast;
group_t &ast_ctx_t::group(const std::string &name) {
if (groups.find(name) == groups.end()) return groups[name] = {};
else return groups[name];
}
ast_ctx_t::ast_ctx_t(msg_stack_t &messages, std::vector<token_t> &tokens):
messages(messages), tokens(tokens) {
group("$_exp_val")
.add("$_var", parse_exp_var)
.add("$_int", parse_exp_int_lit)
.add("$_string", parse_exp_str_lit);
// .add_last("$_float", parse_exp_float_lit)
group("$_stat")
.add("$_while", { "while" }, parse_while)
.add("$_if", { "if" }, parse_if)
.add("$_return", { "return" }, parse_return)
.add("$_break", { "break" }, parse_break)
.add("$_continue", { "continue" }, parse_continue)
.add("$_comp", parse_stat_comp)
.add("$_exp", parse_stat_exp);
group("$_def")
.add("$_func", parse_func)
.add("$_struct", { "struct" }, parse_struct)
.add("$_field", parse_field);
group("$_struct_def")
.add("$_func", parse_func)
.add("$_field", parse_field);
}