diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-16 15:42:59 +0630 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-16 15:42:59 +0630 |
commit | 8f75241bcbe6c0497f2e09c4c6f081839250e22b (patch) | |
tree | 76d8b9f2542004c0b6559f06f864a64b49ad59b4 /asm | |
parent | d5c43b1c3f77e40201731ff298ce73416951ce72 (diff) | |
download | ovm-asm-rewrite-cpp.tar.gz ovm-asm-rewrite-cpp.tar.bz2 ovm-asm-rewrite-cpp.zip |
Halting work on preprocesser units and rewrite as a wholeasm-rewrite-cpp
I've decided to split the project into 2 repositories: the assembler
and the runtime. The runtime will contain both the executable and
lib/ while the assembler will have the runtime as a git submodule and
use it to build. I think this is a clean solution, a lot cleaner than
having them all in one project where the Makefile has to massively
expand.
Diffstat (limited to 'asm')
-rw-r--r-- | asm/preprocesser.cpp | 8 | ||||
-rw-r--r-- | asm/preprocesser.hpp | 15 |
2 files changed, 23 insertions, 0 deletions
diff --git a/asm/preprocesser.cpp b/asm/preprocesser.cpp index f5e31e4..7f52e40 100644 --- a/asm/preprocesser.cpp +++ b/asm/preprocesser.cpp @@ -208,3 +208,11 @@ pp_err_t::pp_err_t(pp_err_type_t err, const token_t *ref) pp_err_t::pp_err_t(pp_err_type_t err, const token_t *ref, lerr_t lerr) : reference{ref}, type{err}, lerr{lerr} {} + +// pp_unit_t::pp_unit_t(const token_t *const token) : resolved{false}, +// token{token} +// {} + +// pp_unit_t::pp_unit_t(std::string_view name, std::vector<pp_unit_t> elements) +// : resolved{false}, token{nullptr}, container{name, elements} +// {} diff --git a/asm/preprocesser.hpp b/asm/preprocesser.hpp index aac3041..4938d4e 100644 --- a/asm/preprocesser.hpp +++ b/asm/preprocesser.hpp @@ -42,6 +42,21 @@ struct pp_err_t std::ostream &operator<<(std::ostream &, pp_err_t &); +struct pp_unit_t +{ + const token_t *const token; + struct + { + std::string_view name; + std::vector<pp_unit_t> elements; + } container; + + pp_unit_t(const token_t *const); + pp_unit_t(std::string_view, std::vector<pp_unit_t>); +}; + +std::vector<pp_unit_t> tokens_to_units(const std::vector<token_t *> &); +pp_err_t preprocess_use(std::vector<pp_unit_t> &); pp_err_t preprocesser(const std::vector<token_t *> &, std::vector<token_t *> &); #endif |