diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-14 17:22:34 +0630 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-14 17:25:28 +0630 |
commit | 72ef40e6718cbe309a8fe6f32ac31adb1a40dda2 (patch) | |
tree | 1cd7b248e0fbad33c0023b4a85142456632b4f60 /asm/preprocesser.hpp | |
parent | 86e9d51ab0b9ed2c5ccd1cf5f06fa3f3448c8f31 (diff) | |
download | ovm-72ef40e6718cbe309a8fe6f32ac31adb1a40dda2.tar.gz ovm-72ef40e6718cbe309a8fe6f32ac31adb1a40dda2.tar.bz2 ovm-72ef40e6718cbe309a8fe6f32ac31adb1a40dda2.zip |
parser -> preprocesser + parser
I've decided to split the module parsing into two modules, one for the
preprocessing stage which only deals with tokens and the parsing stage
which generates bytecode.
Diffstat (limited to 'asm/preprocesser.hpp')
-rw-r--r-- | asm/preprocesser.hpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/asm/preprocesser.hpp b/asm/preprocesser.hpp new file mode 100644 index 0000000..9d733dd --- /dev/null +++ b/asm/preprocesser.hpp @@ -0,0 +1,39 @@ +/* Copyright (C) 2024 Aryadev Chavali + + * You may distribute and modify this code under the terms of the GPLv2 + * license. You should have received a copy of the GPLv2 license with + * this file. If not, please write to: aryadev@aryadevchavali.com. + + * Created: 2024-04-14 + * Author: Aryadev Chavali + * Description: Preprocessor which occurs after lexing before parsing. + */ + +#ifndef PREPROCESSER_HPP +#define PREPROCESSER_HPP + +#include <tuple> + +#include "./lexer.hpp" + +enum pp_err_t +{ + OK = 0, + EXPECTED_NAME, + EXPECTED_STRING, + EXPECTED_END, + FILE_NONEXISTENT, + FILE_PARSE_ERROR, + UNKNOWN_NAME, +}; + +std::pair<std::vector<token_t>, pp_err_t> +preprocesser(const std::vector<token_t> &); + +std::pair<std::vector<token_t>, pp_err_t> +preprocess_macro_blocks(const std::vector<token_t> &); + +std::pair<std::vector<token_t>, pp_err_t> +preprocess_use_blocks(const std::vector<token_t> &); + +#endif |