From 538459a8abf62bc85cc73b9e4eab9c29f732b282 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Tue, 20 Jul 2021 14:02:56 +0000
Subject: [PATCH] Added test document parser to check generators

---
 gens/dot.cpp |   39 ++++++++++++++++++---------------------
 1 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/gens/dot.cpp b/gens/dot.cpp
index 9f987b7..e7fe3ef 100644
--- a/gens/dot.cpp
+++ b/gens/dot.cpp
@@ -3,15 +3,16 @@
 #include <string>
 #include "../ast.h"
 #include "../gens.h"
-
-dot_gen::dot_gen(std::string fname) {
-	out.open(fname);
-}
+#include "dot.h"
 
 dot_gen::~dot_gen() {
 	out.close();
 }
 
+void dot_gen::set_file(std::string file_name) {
+	out.open(file_name);
+}
+
 std::string* dot_gen::new_node() {
 	std::string *o = new std::string();
 	*o = "Node"+std::to_string(node_cnt++);
@@ -42,7 +43,7 @@
 
 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;
 }
 
@@ -60,31 +61,27 @@
 
 void* dot_gen::visit_Heading(Heading *h) {
 	std::string *h_id = new_node();
-	std::vector<Word*> *w = h->get_words();
+	Line_Word *w = h->get_words();
 	out << *h_id << " [label=\"Heading\"];" << std::endl;
-	for (std::vector<Word*>::size_type i = 0; i < w->size(); i++) {
-		std::string *ret_id = (std::string*)(*w)[i]->visit(this);
-		out << *h_id << "->" << *ret_id << ";" << std::endl;
-		delete ret_id;
-	}
+	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) {
 	std::string *l_id = new_node();
-	std::vector<Word*> *w = l->get_words();
-	out << *l_id << " [label=\"List(l: " << l->get_level() << ", n:" << l->get_number() << "\"];" << std::endl;
-	for (std::vector<Word*>::size_type i = 0; i < w->size(); i++) {
-		std::string *ret_id = (std::string*)(*w)[i]->visit(this);
-		out << *l_id << "->" << *ret_id << ";" << std::endl;
-		delete ret_id;
-	}
+	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 << "->" << *ret_id << ";" << std::endl;
+	delete ret_id;
 	return l_id;
 }
 
 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;
 }
 
@@ -102,7 +99,7 @@
 
 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;
 }
 
@@ -114,7 +111,7 @@
 
 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;
 }
 

--
Gitblit v1.10.0