From e8ea5e907ca1fb359d5dd342e505a78bab42d879 Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Thu, 12 Aug 2021 10:14:58 +0000 Subject: [PATCH] Renamed tester to fit with parser naming --- gens/dot.cpp | 149 +++++++++++++++++++++++++++++++------------------ 1 files changed, 93 insertions(+), 56 deletions(-) diff --git a/gens/dot.cpp b/gens/dot.cpp index be955d9..542b6a1 100644 --- a/gens/dot.cpp +++ b/gens/dot.cpp @@ -1,32 +1,30 @@ +#include "dot.h" +#include "../ast.h" +#include "../gens.h" #include <fstream> #include <iostream> #include <string> -#include "../ast.h" -#include "../gens.h" -#include "dot.h" -dot_gen::~dot_gen() { - out.close(); -} +dot_gen::~dot_gen() { out.close(); } -void dot_gen::set_file(std::string file_name) { - out.open(file_name); -} +void dot_gen::set_file(std::string file_name) { out.open(file_name); } -std::string* dot_gen::new_node() { +std::string *dot_gen::new_node() +{ std::string *o = new std::string(); - *o = "Node"+std::to_string(node_cnt++); + *o = "Node" + std::to_string(node_cnt++); return o; } -void* dot_gen::visit_Document(Document *d) { +void *dot_gen::visit_Document(Document *d) +{ out << "digraph ast {" << std::endl; node_cnt = 0; std::string *doc_id = new_node(); out << *doc_id << " [label=\"Document\"];" << std::endl; - std::vector<Block*> *b = d->get_blocks(); - for (std::vector<Block*>::size_type i = 0; i < b->size(); i++) { - std::string* ret_id = (std::string *)(*b)[i]->visit(this); + std::vector<Block *> *b = d->get_blocks(); + for (std::vector<Block *>::size_type i = 0; i < b->size(); i++) { + std::string *ret_id = (std::string *)(*b)[i]->visit(this); out << *doc_id << "->" << *ret_id << ";" << std::endl; delete ret_id; } @@ -35,17 +33,21 @@ return NULL; } -void* dot_gen::visit_Block_Table(Block_Table *bt) { +void *dot_gen::visit_Block_Table(Block_Table *bt) +{ std::string *b_id = new_node(); - std::vector<std::vector<Line_Word*>*> *t = bt->get_table(); + std::vector<std::vector<Line_Word *> *> *t = bt->get_table(); out << *b_id << " [label=\"Block Table\"];" << std::endl; - for (std::vector<std::vector<Line_Word*>*>::size_type i = 0; i < t->size(); i++) { + for (std::vector<std::vector<Line_Word *> *>::size_type i = 0; + i < t->size(); i++) { std::string *row_id = new_node(); out << *row_id << " [label=\"Row(" << i << ")\"];" << std::endl; out << *b_id << "->" << *row_id << ";" << std::endl; - std::vector<Line_Word*> *r = (*t)[i]; - for (std::vector<Line_Word*>::size_type j = 0; j < r->size(); j++) { - std::string *ret_id = (std::string*)(*r)[j]->visit(this); + std::vector<Line_Word *> *r = (*t)[i]; + for (std::vector<Line_Word *>::size_type j = 0; j < r->size(); + j++) { + std::string *ret_id = + (std::string *)(*r)[j]->visit(this); out << *row_id << "->" << *ret_id << ";" << std::endl; delete ret_id; } @@ -54,103 +56,138 @@ return b_id; } -void* dot_gen::visit_Block_Code(Block_Code *bc) { +void *dot_gen::visit_Block_Code(Block_Code *bc) +{ std::string *c_id = new_node(); - out << *c_id << " [label=\"Block Code(" << bc->get_lang() << ")\"];" << std::endl; + out << *c_id << " [label=\"Block Code(" << bc->get_lang() << ")\"];" + << std::endl; return c_id; } -void* dot_gen::visit_Block_Line(Block_Line *bl) { - std::string *bl_id = new_node(); - std::vector<Line*> *l = bl->get_lines(); - out << *bl_id << " [label=\"Block Line\"];" << std::endl; - for (std::vector<Line*>::size_type i = 0; i < l->size(); i++) { - std::string *ret_id = (std::string*)(*l)[i]->visit(this); - out << *bl_id << "->" << *ret_id << ";" << std::endl; - delete ret_id; - } - return bl_id; +void *dot_gen::visit_Block_Word(Block_Word *bl) +{ + std::string *bw_id = new_node(); + out << *bw_id << " [label=\"Block Word\"];" << std::endl; + std::string *ret_id = (std::string *)bl->get_words()->visit(this); + out << *bw_id << "->" << *ret_id << ";" << std::endl; + delete ret_id; + return bw_id; } -void* dot_gen::visit_Heading(Heading *h) { +void *dot_gen::visit_Heading(Heading *h) +{ std::string *h_id = new_node(); Line_Word *w = h->get_words(); out << *h_id << " [label=\"Heading\"];" << std::endl; - std::string *ret_id = (std::string*)w->visit(this); + std::string *ret_id = (std::string *)w->visit(this); out << *h_id << "->" << *ret_id << ";" << std::endl; delete ret_id; return h_id; } -void* dot_gen::visit_List(List *l) { +void *dot_gen::visit_List(List *l) +{ std::string *l_id = new_node(); Line_Word *w = l->get_words(); - out << *l_id << " [label=\"List(l: " << l->get_level() << ", n:" << l->get_number() << ")\"];" << std::endl; - std::string *ret_id = (std::string*)w->visit(this); + out << *l_id << " [label=\"List(l: " << l->get_level() + << ", n:" << l->get_number() << ")\"];" << std::endl; + std::string *ret_id = (std::string *)w->visit(this); out << *l_id << "->" << *ret_id << ";" << std::endl; delete ret_id; return l_id; } -void* dot_gen::visit_MathDisp(MathDisp *md) { +void *dot_gen::visit_MathDisp(MathDisp *md) +{ std::string *md_id = new_node(); - out << *md_id << " [label=\"MathDisp(" << md->get_expr() << ")\"];" << std::endl; + out << *md_id << " [label=\"MathDisp(" << md->get_expr() << ")\"];" + << std::endl; return md_id; } -void* dot_gen::visit_Line_Word(Line_Word *lw) { +void *dot_gen::visit_Line_Word(Line_Word *lw) +{ std::string *lw_id = new_node(); - std::vector<Word*> *w = lw->get_words(); + std::vector<Word *> *w = lw->get_words(); out << *lw_id << " [label=\"Line Word\"];" << std::endl; - for (std::vector<Word*>::size_type i = 0; i < w->size(); i++) { - std::string *ret_id = (std::string*)(*w)[i]->visit(this); + for (std::vector<Word *>::size_type i = 0; i < w->size(); i++) { + std::string *ret_id = (std::string *)(*w)[i]->visit(this); out << *lw_id << "->" << *ret_id << ";" << std::endl; delete ret_id; } return lw_id; } -void* dot_gen::visit_MathInline(MathInline *mi) { +void *dot_gen::visit_MathInline(MathInline *mi) +{ std::string *mi_id = new_node(); - out << *mi_id << " [label=\"Math Inline(" << mi->get_expr() << ")\"];" << std::endl; + out << *mi_id << " [label=\"Math Inline(" << mi->get_expr() << ")\"];" + << std::endl; return mi_id; } -void* dot_gen::visit_Link(Link *l) { +void *dot_gen::visit_Link(Link *l) +{ std::string *l_id = new_node(); - out << *l_id << " [label=\"Link(" << l->get_link() << "," << l->get_text() << ")\"];" << std::endl; + out << *l_id << " [label=\"Link(" << l->get_link() << "," + << l->get_text() << ")\"];" << std::endl; return l_id; } -void* dot_gen::visit_Text(Text *t) { +void *dot_gen::visit_Text(Text *t) +{ std::string *t_id = new_node(); - out << *t_id << " [label=\"Text(" << t->get_text() << ")\"];" << std::endl; + out << *t_id << " [label=\"Text(" << t->get_text() << ")\"];" + << std::endl; return t_id; } -void* dot_gen::visit_Format_Bold(Format_Bold *fb) { +void *dot_gen::visit_Format_Bold(Format_Bold *fb) +{ std::string *fb_id = new_node(); out << *fb_id << " [label=\"Format Bold\"];" << std::endl; - std::string *ret_id = (std::string*)fb->get_f()->visit(this); + std::string *ret_id = (std::string *)fb->get_f()->visit(this); out << *fb_id << "->" << *ret_id << ";" << std::endl; delete ret_id; return fb_id; } -void* dot_gen::visit_Format_Italic(Format_Italic *fi) { +void *dot_gen::visit_Format_Italic(Format_Italic *fi) +{ std::string *fi_id = new_node(); out << *fi_id << " [label=\"Format Italic\"];" << std::endl; - std::string *ret_id = (std::string*)fi->get_f()->visit(this); + std::string *ret_id = (std::string *)fi->get_f()->visit(this); out << *fi_id << "->" << *ret_id << ";" << std::endl; delete ret_id; return fi_id; } -void* dot_gen::visit_Format_Verbatim(Format_Verbatim *fv) { +void *dot_gen::visit_Format_Verbatim(Format_Verbatim *fv) +{ std::string *fv_id = new_node(); out << *fv_id << " [label=\"Format Verbatim\"];" << std::endl; - std::string *ret_id = (std::string*)fv->get_f()->visit(this); + std::string *ret_id = (std::string *)fv->get_f()->visit(this); out << *fv_id << "->" << *ret_id << ";" << std::endl; delete ret_id; return fv_id; } + +void *dot_gen::visit_Format_Strikethrough(Format_Strikethrough *fs) +{ + std::string *fs_id = new_node(); + out << *fs_id << " [label=\"Format Strikethrough\"];" << std::endl; + std::string *ret_id = (std::string *)fs->get_f()->visit(this); + out << *fs_id << "->" << *ret_id << ";" << std::endl; + delete ret_id; + return fs_id; +} + +void *dot_gen::visit_Format_Underline(Format_Underline *fu) +{ + std::string *fu_id = new_node(); + out << *fu_id << " [label=\"Format Underline\"];" << std::endl; + std::string *ret_id = (std::string *)fu->get_f()->visit(this); + out << *fu_id << "->" << *ret_id << ";" << std::endl; + delete ret_id; + return fu_id; +} -- Gitblit v1.10.0