From be3e40aa40ba12262aba550b2bab6a69e8b4db2e Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Thu, 22 Jul 2021 01:31:50 +0000 Subject: [PATCH] Fixed makefile such that final linking isnt redone. Still need to ensure build dir is created for parent objects --- ast.h | 112 +++++++++++++++++++++++++++---------------------------- 1 files changed, 55 insertions(+), 57 deletions(-) diff --git a/ast.h b/ast.h index ccc5e74..41ef05e 100644 --- a/ast.h +++ b/ast.h @@ -33,21 +33,19 @@ class Word: public ast_node {}; class MathInline: public Word { - std::string *expr; + std::string expr; public: - MathInline(std::string *e); - ~MathInline(); - std::string* get_expr(); + MathInline(std::string e); + std::string get_expr(); void* visit(ast_visitor *v); }; class Link: public Word { - std::string *link, *text; + std::string link, text; public: - Link(std::string *l, std::string *t); - ~Link(); - std::string* get_link(); - std::string* get_text(); + Link(std::string l, std::string t); + std::string get_link(); + std::string get_text(); void* visit(ast_visitor *v); }; @@ -57,7 +55,7 @@ std::string t; public: Text(std::string tt); - std::string* get_text(); + std::string get_text(); void* visit(ast_visitor *v); }; @@ -89,38 +87,6 @@ }; class Line: public ast_node {}; -class Heading: public Line { - int level; - std::vector<Word*> words; -public: - Heading(int l, std::vector<Word*> w); - ~Heading(); - int get_level(); - std::vector<Word*>* get_words(); - void* visit(ast_visitor *v); -}; - -class List: public Line { - int level, number; - std::vector<Word*> words; -public: - List(int l, int n, std::vector<Word*> w); - ~List(); - int get_level(); - int get_number(); - std::vector<Word*>* get_words(); - void* visit(ast_visitor *v); -}; - -class MathDisp: public Line { - std::string *expr; -public: - MathDisp(std::string *e); - ~MathDisp(); - std::string* get_expr(); - void* visit(ast_visitor *v); -}; - class Line_Word: public Line { std::vector<Word*> words; public: @@ -130,26 +96,58 @@ void* visit(ast_visitor *v); }; +class Heading: public Line { + int level; + Line_Word *words; +public: + Heading(int l, Line_Word *w); + ~Heading(); + int get_level(); + Line_Word* get_words(); + void* visit(ast_visitor *v); +}; + +class List: public Line { + int level, number; + Line_Word *words; +public: + List(int l, int n, Line_Word *w); + ~List(); + int get_level(); + int get_number(); + Line_Word* get_words(); + void* visit(ast_visitor *v); +}; + +class MathDisp: public Line { + std::string expr; +public: + MathDisp(std::string e); + std::string get_expr(); + void* visit(ast_visitor *v); +}; + + class Block: public ast_node {}; class Block_Table: public Block { - std::vector<std::vector<Line_Word*>> table; + std::vector<std::vector<Line_Word*>*> table; public: ~Block_Table(); - std::vector<std::vector<Line_Word*>> get_table(); - int add_row(std::vector<Line_Word*> row); + std::vector<std::vector<Line_Word*>*>* get_table(); + int add_row(std::vector<Line_Word*>* row); + std::vector<Line_Word*>* get_row(std::vector<Line_Word*>::size_type i); void* visit(ast_visitor *v); }; class Block_Code: public Block { - std::string *c; - std::string *lang; + std::string c; + std::string lang; public: - Block_Code(std::string *l); - ~Block_Code(); - int add_line(std::string *add); - std::string* get_lang(); - std::string* get_code(); + Block_Code(std::string l); + int add_line(std::string add); + std::string get_lang(); + std::string get_code(); void* visit(ast_visitor *v); }; @@ -163,14 +161,14 @@ }; class Document: public ast_node { - std::string *title, *author, *date; + std::string title, author, date; std::vector<Block*> blocks; public: - Document(std::string *t, std::string *a, std::string *d); + Document(std::string t, std::string a, std::string d); ~Document(); - std::string* get_title(); - std::string* get_author(); - std::string* get_date(); + std::string get_title(); + std::string get_author(); + std::string get_date(); std::vector<Block*>* get_blocks(); int add_block(Block *b); void* visit(ast_visitor *v); -- Gitblit v1.10.0