summaryrefslogtreecommitdiff
path: root/src/core/interpret.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/interpret.h')
-rw-r--r--src/core/interpret.h80
1 files changed, 31 insertions, 49 deletions
diff --git a/src/core/interpret.h b/src/core/interpret.h
index 6ac035a..6d3a4a5 100644
--- a/src/core/interpret.h
+++ b/src/core/interpret.h
@@ -1,14 +1,13 @@
/*:*
*: File: ./src/core/interpret.h
- *: 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
- *: All rights reserved.
- *:
+ *: A simple Fype interpreter
+ *:
+ *: WWW: http://fype.buetow.org
+ *: AUTHOR: http://paul.buetow.org
+ *: E-Mail: fype at dev.buetow.org
+ *:
+ *: The Fype Language; (c) 2005 - 2010 - Dipl.-Inform. (FH) Paul C. Buetow
+ *:
*: 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,61 +15,44 @@
*: * 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 buetow.org 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 C. 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 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)
*: 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.
*:*/
#ifndef INTERPRET_H
#define INTERPRET_H
+#include "frame.h"
+#include "token.h"
+#include "lambda.h"
#include "../data/list.h"
-#include "../data/stack.h"
-#include "../data/hash.h"
-
#include "../fype.h"
-#include "garbage.h"
-#include "scope.h"
-#include "token.h"
-
-typedef enum {
- CONTROL_NONE,
- CONTROL_NEXT,
- CONTROL_BREAK,
-} ControlType;
-
-typedef struct {
+typedef struct _Interpret {
List *p_list_token;
- Scope *p_scope;
- _Bool b_scope_delete;
- Stack *p_stack;
- ControlType ct;
-
- ListIterator *p_iter;
+ Frame *p_frame;
Token *p_token;
- TokenType tt;
- Token *p_token_prev;
- TokenType tt_prev;
- Token *p_token_temp;
+ int i_pcount;
+ _Bool b_is_lambda_interpretation;
+ Lambda *p_lambda;
} Interpret;
-Interpret* interpret_new(List *p_list_token, Hash *p_hash_syms);
-void interpret_delete(Interpret *p_interpret);
-void interpret_run(Fype *p_type);
-int interpret_process(Interpret *p_interpret);
-int interpret_subprocess(Interpret *p_interpret, List *p_list_token);
+Interpret* interpret_new(List *p_list_token);
+Interpret* interpret_new_lambda(Interpret *p_inter, Lambda *p_lambda);
+void interpret_delete(Interpret *p_inter);
+void interpret_run(PBSc *p_fype);
#endif /* INTERPRET_H */