Joel Grunbaum
2021-07-20 538459a8abf62bc85cc73b9e4eab9c29f732b282
Added test document parser to check generators
1 files modified
3 files added
119 ■■■■ changed files
main.cpp 21 ●●●●● patch | view | raw | blame | history
parsers.h 14 ●●●●● patch | view | raw | blame | history
parsers/tester.cpp 73 ●●●●● patch | view | raw | blame | history
parsers/tester.h 11 ●●●●● patch | view | raw | blame | history
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;
}
parsers.h
New file
@@ -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
parsers/tester.cpp
New file
@@ -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;
}
parsers/tester.h
New file
@@ -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