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