From: Michael D. Lowis Date: Sat, 10 Oct 2015 01:17:19 +0000 (-0400) Subject: removed vector references from libparse X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=a76e8f5a2bbccc22decd953b787785da5fa31d11;p=proto%2Fsclpl.git removed vector references from libparse --- diff --git a/source/libparse/libparse.h b/source/libparse/libparse.h index 3499d43..83f69fe 100644 --- a/source/libparse/libparse.h +++ b/source/libparse/libparse.h @@ -13,7 +13,6 @@ #include #include #include "mem.h" -#include "vec.h" #include "exn.h" /* Token Types @@ -73,7 +72,7 @@ typedef struct AST { struct AST* body; } func; /* Code Block */ - vec_t block; + //vec_t block; /* String */ char* stringval; /* Symbol */ @@ -161,7 +160,6 @@ typedef struct { FILE* input; char* prompt; Tok* tok; - vec_t* stack; } Parser; // Lexer routines @@ -179,28 +177,6 @@ bool accept(Parser* p_parser, TokType type); bool accept_str(Parser* p_parser, TokType type, const char* p_text); bool expect(Parser* p_parser, TokType type); bool expect_str(Parser* p_parser, TokType type, const char* p_text); -Tok* shifttok(Parser* parser, TokType type); - -//size_t stack_push(Parser* ctx, AST* node); -//AST* stack_pop(Parser* ctx); -//AST* stack_get(Parser* ctx, int index); - - - -//size_t mark(Parser* p_parser); -//void reduce(Parser* p_parser, size_t mark); -//AST* get_tree(Parser* p_parser); -//void insert(Parser* p_parser, TokType type, char* value); - -#if 0 -// AST Routines -AST* tree_convert(AST* p_tree); -AST* tree_new(ASTType tag, void* p_obj); -AST* tree_get_child(AST* p_tree, size_t idx); -void* tree_get_val(AST* p_tree); -void* tree_get_child_val(AST* p_tree, size_t idx); -bool tree_is_formtype(AST* p_tree, const char* val); -#endif // Grammar Routines AST* toplevel(Parser* p); diff --git a/source/libparse/parser.c b/source/libparse/parser.c index ba81c40..35323ce 100644 --- a/source/libparse/parser.c +++ b/source/libparse/parser.c @@ -15,7 +15,7 @@ static void parser_free(void* obj) { if ((NULL != parser->tok) && (&tok_eof != parser->tok)) { mem_release(parser->tok); } - mem_release(parser->stack); + //mem_release(parser->stack); } Parser* parser_new(char* prompt, FILE* input) @@ -27,7 +27,7 @@ Parser* parser_new(char* prompt, FILE* input) parser->input = input; parser->prompt = prompt; parser->tok = NULL; - parser->stack = vec_new(0); + //parser->stack = vec_new(0); return parser; } @@ -54,7 +54,7 @@ void parser_resume(Parser* parser) { mem_release(parser->tok); parser->tok = NULL; } - vec_clear(parser->stack); + //vec_clear(parser->stack); /* We ignore the rest of the current line and attempt to start parsing * again on the next line */ fetchline(parser); @@ -72,7 +72,7 @@ Tok* shifttok(Parser* parser, TokType type) { Tok* tok = NULL; if (peek(parser)->type == type) { - vec_push_back(parser->stack, parser->tok); + //vec_push_back(parser->stack, parser->tok); parser->tok = NULL; } else { error(parser, "Unexpected token"); @@ -122,20 +122,3 @@ bool expect_str(Parser* parser, TokType type, const char* text) return ret; } -size_t stack_push(Parser* ctx, AST* node) -{ - vec_push_back(ctx->stack, node); - return vec_size(ctx->stack)-1; -} - -AST* stack_pop(Parser* ctx) -{ - return (AST*)vec_pop_back(ctx->stack); -} - -AST* stack_get(Parser* ctx, int index) -{ - index = (index < 0) ? (vec_size(ctx->stack)+index) : index; - return (AST*)vec_at(ctx->stack, (size_t)index); -} - diff --git a/source/libparse/tree.c b/source/libparse/tree.c deleted file mode 100644 index 598dea1..0000000 --- a/source/libparse/tree.c +++ /dev/null @@ -1,99 +0,0 @@ -/** - @file tree.c - @brief See header for details - $Revision$ - $HeadURL$ - */ -#include - -#if 0 -static void tree_free(void* p_obj) { - AST* p_tree = ((AST*)p_obj); - if (NULL != p_tree->ptr.tok) { - mem_release(p_tree->ptr.tok); - } -} - -static bool is_punctuation(Tok* p_tok) { - bool ret = false; - switch(p_tok->type) { - case T_END: - case T_LBRACE: - case T_RBRACE: - case T_LBRACK: - case T_RBRACK: - case T_LPAR: - case T_RPAR: - case T_COMMA: - ret = true; - default: - break; - } - return ret; -} - -AST* tree_convert(AST* p_tree) { - AST* p_newtree = NULL; - if (p_tree->tag == ATOM) { - if (!is_punctuation(p_tree->ptr.tok)) - p_newtree = mem_retain(p_tree); - } else { - vec_t* p_vec = p_tree->ptr.vec; - vec_t* p_newvec = vec_new(0); - p_newtree = tree_new(TREE, p_newvec); - for(size_t idx = 0; idx < vec_size(p_vec); idx++) { - AST* p_item = tree_convert(vec_at(p_vec,idx)); - if (NULL != p_item) - vec_push_back(p_newvec, p_item); - } - } - return p_newtree; -} - -AST* tree_new(ASTType tag, void* p_obj) { - AST* p_tree = (AST*)mem_allocate(sizeof(AST), &tree_free); - //p_tree->tag = tag; - //p_tree->ptr.tok = (Tok*)p_obj; - return p_tree; -} - -AST* tree_get_child(AST* p_tree, size_t idx) { - AST* child = NULL; - if (p_tree->tag == TREE) { - vec_t* vec = p_tree->ptr.vec; - if (idx < vec_size(vec)) - child = vec_at(vec, idx); - } - return child; -} - -void* tree_get_val(AST* p_tree) { - void* ret = NULL; - if (p_tree->tag == ATOM) { - ret = p_tree->ptr.tok->value.text; - } - return ret; -} - -void* tree_get_child_val(AST* p_tree, size_t idx) { - void* ret = NULL; - AST* child = tree_get_child(p_tree,idx); - if (child != NULL) { - ret = tree_get_val(child); - } - return ret; -} - -bool tree_is_formtype(AST* p_tree, const char* val) { - bool ret = false; - AST* child = tree_get_child(p_tree, 0); - if ((NULL != child) && (child->tag == ATOM)) { - Tok* token = child->ptr.tok; - if ((token->type == T_ID) && - (0 == strcmp(val, token->value.text))) { - ret = true; - } - } - return ret; -} -#endif