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
---
main.cpp | 21 ++++------
parsers.h | 14 +++++++
parsers/tester.h | 11 +++++
parsers/tester.cpp | 73 ++++++++++++++++++++++++++++++++++++
4 files changed, 107 insertions(+), 12 deletions(-)
diff --git a/main.cpp b/main.cpp
index 07f61cb..9105006 100644
--- a/main.cpp
+++ b/main.cpp
@@ -2,21 +2,18 @@
#include <string>
#include "ast.h"
#include "gens.h"
+#include "parsers.h"
int main(int argc, char** argv)
{
- Document *d = new Document(NULL, NULL, NULL);
- Block_Line *b = new Block_Line();
- Line_Word *lw = new Line_Word();
- std::string s = "Hello";
- dot_gen *v = new dot_gen("temp.dot");
+ Document *d;
+ parser *p = new tester();
+ gen *g = new dot_gen();
+ g->set_file("temp.dot");
+ d = p->parse();
+ d->visit(g);
- d->add_block(b);
- b->add_line(lw);
- lw->add_word(new Format_Bold(new Text("Hello")));
- lw->add_word(new Format_Italic(new Text("World")));
- lw->add_word(new Text("Test"));
- d->visit(v);
+ delete p;
+ delete g;
delete d;
- delete v;
}
diff --git a/parsers.h b/parsers.h
new file mode 100644
index 0000000..8ba827b
--- /dev/null
+++ b/parsers.h
@@ -0,0 +1,14 @@
+#ifndef PARSERS_H
+#define PARSERS_H
+#include <string>
+#include "ast.h"
+
+class parser {
+public:
+ virtual ~parser()=default;
+ virtual void set_file(std::string file_name)=0;
+ virtual Document* parse()=0;
+};
+
+#include "parsers/tester.h"
+#endif
diff --git a/parsers/tester.cpp b/parsers/tester.cpp
new file mode 100644
index 0000000..bfbdbda
--- /dev/null
+++ b/parsers/tester.cpp
@@ -0,0 +1,73 @@
+#include <string>
+#include "../ast.h"
+#include "tester.h"
+
+void tester::set_file(std::string file_name)
+{
+ return;
+}
+
+Document* tester::parse()
+{
+ Document *d = new Document("a","b","c");
+
+ //block line test
+ Block_Line *bl = new Block_Line();
+ Line_Word *lw = new Line_Word();
+ d->add_block(bl);
+ bl->add_line(lw);
+ lw->add_word(new Format_Bold(new Text("Bold")));
+ lw->add_word(new Format_Italic(new Text("Italic")));
+ lw->add_word(new Format_Verbatim(new Text("Verbatim")));
+ lw->add_word(new Text("Text"));
+ lw->add_word(new Format_Bold(new Format_Italic(new Text("BoldItalic"))));
+ lw->add_word(new MathInline("1+1=2"));
+ lw->add_word(new Link("link","text"));
+
+ //heading test
+ lw = new Line_Word();
+ lw->add_word(new Text("heading"));
+ Heading *h = new Heading(1, lw);
+ bl->add_line(h);
+
+ //list test
+ lw = new Line_Word();
+ lw->add_word(new Text("ordered"));
+ List *l = new List(1,1,lw);
+ bl->add_line(l);
+ lw = new Line_Word();
+ lw->add_word(new Text("unordered"));
+ l = new List(1,0,lw);
+ bl->add_line(l);
+
+ //mathdisp test
+ bl->add_line(new MathDisp("1+1=2"));
+
+ //table test
+ Block_Table *bt = new Block_Table();
+ std::vector<Line_Word*>* row = new std::vector<Line_Word*>();
+ lw = new Line_Word();
+ lw->add_word(new Text("Table1"));
+ row->push_back(lw);
+ lw = new Line_Word();
+ lw->add_word(new Text("Table2"));
+ row->push_back(lw);
+ bt->add_row(row);
+ row = new std::vector<Line_Word*>();
+ lw = new Line_Word();
+ lw->add_word(new Text("Table3"));
+ row->push_back(lw);
+ lw = new Line_Word();
+ lw->add_word(new Text("Table4"));
+ row->push_back(lw);
+ bt->add_row(row);
+ d->add_block(bt);
+
+ //code test
+ Block_Code *bc = new Block_Code("C");
+ bc->add_line("#include <stdio.h>");
+ bc->add_line("int main(void)\n{\nprintf(\"Hello World!\\n\");\n}");
+ d->add_block(bc);
+
+ return d;
+}
diff --git a/parsers/tester.h b/parsers/tester.h
new file mode 100644
index 0000000..7c287fe
--- /dev/null
+++ b/parsers/tester.h
@@ -0,0 +1,11 @@
+#ifndef TESTER_H
+#define TESTER_H
+#include "../parsers.h"
+#include "../ast.h"
+
+class tester: public parser {
+public:
+ void set_file(std::string file_name);
+ Document* parse();
+};
+#endif
--
Gitblit v1.10.0