summaryrefslogtreecommitdiff
path: root/src/core/symbol.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/symbol.c')
-rw-r--r--src/core/symbol.c108
1 files changed, 26 insertions, 82 deletions
diff --git a/src/core/symbol.c b/src/core/symbol.c
index f4ad990..2343cdb 100644
--- a/src/core/symbol.c
+++ b/src/core/symbol.c
@@ -1,14 +1,13 @@
/*:*
*: File: ./src/core/symbol.c
*: A simple interpreter
- *:
- *: WWW : http://fype.buetow.org
- *: AUTHOR : http://paul.buetow.org
- *: E-Mail : fype at dev.buetow.org
- *:
- *: Copyright (c) 2005 - 2009, Dipl.-Inform. (FH) Paul C. Buetow
+ *:
+ *: WWW : http://fype.buetow.org
+ *: E-Mail : fype@dev.buetow.org
+ *:
+ *: Copyright (c) 2005 2006 2007 2008, Dipl.-Inf. (FH) Paul C. Buetow
*: All rights reserved.
- *:
+ *:
*: Redistribution and use in source and binary forms, with or without modi-
*: fication, are permitted provided that the following conditions are met:
*: * Redistributions of source code must retain the above copyright
@@ -16,27 +15,26 @@
*: * Redistributions in binary form must reproduce the above copyright
*: notice, this list of conditions and the following disclaimer in the
*: documentation and/or other materials provided with the distribution.
- *: * Neither the name of buetow.org nor the names of its contributors may
- *: be used to endorse or promote products derived from this software
+ *: * Neither the name of P. B. Labs nor the names of its contributors may
+ *: be used to endorse or promote products derived from this software
*: without specific prior written permission.
- *:
- *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
- *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ *:
+ *: THIS SOFTWARE IS PROVIDED BY Paul Buetow AS IS'' AND ANY EXPRESS OR
+ *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
*: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
- *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ *: DISCLAIMED. IN NO EVENT SHALL Paul Buetow BE LIABLE FOR ANY DIRECT,
+ *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
*: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
*: POSSIBILITY OF SUCH DAMAGE.
*:*/
#include "symbol.h"
#include "../data/list.h"
-#include "token.h"
Symbol*
symbol_new(SymbolType sym, void *p_val) {
@@ -44,79 +42,25 @@ symbol_new(SymbolType sym, void *p_val) {
p_symbol->sym = sym;
p_symbol->p_val = p_val;
- p_symbol->i_refs = 1;
return p_symbol;
}
void
symbol_delete(Symbol *p_symbol) {
- if (--p_symbol->i_refs == 0) {
- switch (symbol_get_sym(p_symbol)) {
- case SYM_PROCEDURE:
- {
- List *p_list_token = symbol_get_val(p_symbol);
- list_delete(p_list_token);
- }
- case SYM_ARRAY:
- symbol_delete(symbol_get_val(p_symbol));
- break;
- NO_DEFAULT;
- }
- free(p_symbol);
+ switch (symbol_get_sym(p_symbol)) {
+ case SYM_PROCEDURE:
+ {
+ List *p_list_token = symbol_get_val(p_symbol);
+ list_delete(p_list_token);
+ }
+ break;
+ NO_DEFAULT;
}
+ free(p_symbol);
}
void
symbol_cleanup_hash_syms_cb(void *p_void) {
symbol_delete(p_void);
}
-
-void
-symbol_print(Symbol *p_symbol, char *c_key) {
- printf("%s: %s", sym_get_name(p_symbol->sym), c_key);
-
- switch (p_symbol->sym) {
- case SYM_BUILDIN:
- case SYM_CONSTANT:
- break;
- case SYM_PROCEDURE:
- case SYM_FUNCTION:
- //list_iterate(symbol_get_val(p_symbol), token_print_cb);
- break;
- case SYM_ARRAY:
- break;
- case SYM_VARIABLE:
- printf(" ");
- token_print(symbol_get_val(p_symbol));
- break;
- }
-
- printf("\n");
-}
-
-void
-symbol_print_cb(void *p_void, char *c_key) {
- symbol_print(p_void, c_key);
-}
-
-char*
-sym_get_name(SymbolType sym) {
- switch (sym) {
- case SYM_CONSTANT:
- return ("SYM_CONSTANT");
- case SYM_ARRAY:
- return ("SYM_ARRAY");
- case SYM_VARIABLE:
- return ("SYM_VARIABLE");
- case SYM_BUILDIN:
- return ("SYM_BUILDIN");
- case SYM_PROCEDURE:
- return ("SYM_PROCEDURE");
- case SYM_FUNCTION:
- return ("SYM_FUNCTION");
- }
-
- // Never reach this point
- return ("NONE");
-}