SongZihuan преди 5 години
родител
ревизия
6313af5f4b
променени са 13 файла, в които са добавени 204 реда и са изтрити 297 реда
  1. 2 1
      .vscode/settings.json
  2. 12 2
      gwarf.c
  3. 1 4
      inter/branch.c
  4. 1 36
      inter/cfunc.c
  5. 1 41
      inter/interpreter.c
  6. 5 2
      inter/interpreter.h
  7. 1 11
      inter/parameter.c
  8. 1 8
      inter/statement.c
  9. 1 19
      inter/var.c
  10. 1 1
      paser/gwarf_lex.l
  11. 5 1
      paser/gwarf_yacc.y
  12. 172 170
      paser/y.tab.c
  13. 1 1
      paser/y.tab.h

+ 2 - 1
.vscode/settings.json

@@ -36,7 +36,8 @@
         "hash_map": "c",
         "algorithm": "c",
         "initializer_list": "c",
-        "valarray": "c"
+        "valarray": "c",
+        "interpreter.h": "c"
     },
     "C_Cpp.errorSquiggles": "Disabled"
 }

+ 12 - 2
gwarf.c

@@ -1,5 +1,15 @@
-#include<stdio.h>
-#include"gwarf_interpreter/interpreter.c"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "paser/y.tab.c"
+#include "inter/branch.c"
+#include "inter/cfunc.c"
+#include "inter/parameter.c"
+#include "inter/statement.c"
+#include "inter/var.c"
+
+#include "inter/interpreter.c"
 
 
 int main(){

+ 1 - 4
gwarf_interpreter/branch.c → inter/branch.c

@@ -1,9 +1,6 @@
 #include<stdio.h>
-// #include "interpreter.h"
 
-if_list *make_base_if();
-if_list *make_if(statement *, statement *);
-if_list *append_elif(if_list *, if_list *);
+#include "interpreter.h"
 
 if_list *make_base_if(){  // make base if
     if_list *tmp;

+ 1 - 36
gwarf_interpreter/cfunc.c → inter/cfunc.c

@@ -1,41 +1,6 @@
 #include<stdio.h>
-// #include "interpreter.h"
 
-int len_only_double(double num);
-int len_double(double num);
-int len_int(int num);
-int len_intx(unsigned int num);
-GWARF_value to_object(GWARF_value, var_list *);
-
-void login_official_func(int type, int is_class, var_list *the_var, char *name, GWARF_result (*paser)(func *, parameter *, var_list *, GWARF_result, var_list *));
-void login_official(var_list *the_var, GWARF_result (*paser)(func *, parameter *, var_list *, GWARF_result, var_list *));
-
-// 内置函数
-GWARF_result official_func(func *the_func, parameter *tmp_s, var_list *the_var, GWARF_result father, var_list *);
-
-// object内置类
-class_object *object_login_official(var_list *the_var, GWARF_result (*paser)(func *, parameter *, var_list *, GWARF_result, var_list *));
-GWARF_result object_official_func(func *the_func, parameter *tmp_s, var_list *the_var, GWARF_result father, var_list *out_var);
-
-// gobject内置类
-class_object *gobject_login_official(var_list *the_var, GWARF_result (*paser)(func *, parameter *, var_list *, GWARF_result, var_list *), var_list *father_var_list);
-GWARF_result gobject_official_func(func *the_func, parameter *tmp_s, var_list *the_var, GWARF_result father, var_list *out_var);
-
-// int内置类
-class_object *int_login_official(var_list *the_var, GWARF_result (*paser)(func *, parameter *, var_list *, GWARF_result, var_list *), var_list *father_var_list);
-GWARF_result int_official_func(func *the_func, parameter *tmp_s, var_list *the_var, GWARF_result father, var_list *);
-
-// double内置类
-class_object *double_login_official(var_list *the_var, GWARF_result (*paser)(func *, parameter *, var_list *, GWARF_result, var_list *), var_list *father_var_list);
-GWARF_result double_official_func(func *the_func, parameter *tmp_s, var_list *the_var, GWARF_result father, var_list *);
-
-// str内置类
-class_object *str_login_official(var_list *the_var, GWARF_result (*paser)(func *, parameter *, var_list *, GWARF_result, var_list *), var_list *father_var_list);
-GWARF_result str_official_func(func *the_func, parameter *tmp_s, var_list *the_var, GWARF_result father, var_list *out_var);
-
-// bool内置类
-class_object *bool_login_official(var_list *the_var, GWARF_result (*paser)(func *, parameter *, var_list *, GWARF_result, var_list *), var_list *father_var_list);
-GWARF_result bool_official_func(func *the_func, parameter *tmp_s, var_list *the_var, GWARF_result father, var_list *out_var);
+#include "interpreter.h"
 
 int len_int(int num){
     int count = 1;  // 默认得有1位

+ 1 - 41
gwarf_interpreter/interpreter.c → inter/interpreter.c

@@ -1,48 +1,8 @@
 #include <stdio.h>
 #include <stdlib.h>
-#include "../paser/y.tab.c"
 #include <math.h>
 
-// #include "interpreter.h"
-#include "branch.c"
-#include "cfunc.c"
-#include "parameter.c"
-#include "statement.c"
-#include "var.c"
-
-// running code
-GWARF_result operation_func(statement *, var_list *, var_list *);
-GWARF_result while_func(statement *, var_list *);
-GWARF_result if_func(if_list *, var_list *);
-GWARF_result for_func(statement *, var_list *);
-GWARF_result call_back(statement *, var_list *);
-GWARF_result call_back_core(GWARF_result, var_list *, parameter *);
-GWARF_result block_func(statement *, var_list *);
-
-GWARF_result add_func(GWARF_result, GWARF_result, var_list *);
-GWARF_result sub_func(GWARF_result, GWARF_result, var_list *);
-GWARF_result mul_func(GWARF_result, GWARF_result, var_list *);
-GWARF_result div_func(GWARF_result, GWARF_result, var_list *);
-GWARF_result pow_func(GWARF_result, GWARF_result, var_list *);
-GWARF_result log_func(GWARF_result, GWARF_result, var_list *);
-GWARF_result sqrt_func(GWARF_result, GWARF_result, var_list *);
-GWARF_result assigment_func(char *, GWARF_result, var_list *, int);
-GWARF_result equal_func(GWARF_result, GWARF_result, var_list *, int);
-GWARF_result negative_func(GWARF_result, var_list *);
-
-double sqrt_(double, double);
-double log_(double, double);
-
-GWARF_value to_int(GWARF_value, var_list *the_var);
-GWARF_value to_double(GWARF_value value, var_list *the_var);
-GWARF_value to_str(GWARF_value value, var_list *the_var);
-GWARF_value to_bool_(GWARF_value value, var_list *the_var);
-bool to_bool(GWARF_value);
-
-GWARF_result get__value__(GWARF_value *, var_list *);
-GWARF_result get__bool__(GWARF_value *, var_list *);
-GWARF_result run_func(GWARF_value *, var_list *, char *);
-
+#include "interpreter.h"
 
 double log_(double base, double num){  // 自己定义一次log
     return log(num) / log(base);

+ 5 - 2
gwarf_interpreter/interpreter.h → inter/interpreter.h

@@ -1,4 +1,6 @@
-#include <stdio.h>
+#ifndef _INTERPRETER_H
+#define _INTERPRETER_H
+
 #define false 0
 #define true 1
 #define bool int
@@ -432,4 +434,5 @@ statement_list *statement_base;
 
 int yyerror(char const *);
 FILE *yyin;
-char *yytext;
+char *yytext;
+#endif

+ 1 - 11
gwarf_interpreter/parameter.c → inter/parameter.c

@@ -1,16 +1,6 @@
 #include<stdio.h>
-// #include "interpreter.h"
-
-parameter *make_parameter_name(char *);
-void append_parameter_name(char *, parameter *);
-
-parameter *make_parameter_value(statement *);
-void append_parameter_value(statement *, parameter *);
-parameter *add_parameter_value(statement *, parameter *);
-
-parameter *pack_value_parameter(GWARF_value);
-statement *pack_call_name(char *, statement *);
 
+#include "interpreter.h"
 
 parameter *make_parameter_name(char *name){
     parameter *tmp;

+ 1 - 8
gwarf_interpreter/statement.c → inter/statement.c

@@ -1,13 +1,6 @@
 #include<stdio.h>
-// #include "interpreter.h"
 
-statement *make_statement();
-statement *append_statement(statement *, statement*);
-statement_list *make_statement_list();
-statement_list *make_statement_base(statement *);
-statement_list *append_statement_list(statement *, statement_list *);
-statement *find_statement_list(int, statement_list *);
-statement_list *free_statement_list(statement_list *);
+#include "interpreter.h"
 
 statement *make_statement(){  // make statement
     statement *tmp;

+ 1 - 19
gwarf_interpreter/var.c → inter/var.c

@@ -1,24 +1,6 @@
 #include<stdio.h>
-// #include "interpreter.h"
 
-var *make_var();
-void append_var(char *name, GWARF_value, var *);
-void free_var(var *);
-var *get_var(char *, var *);
-void del_var(char *, var *);
-default_var *make_default_var();
-default_var *make_default_var_base();
-void append_default_var_base(char * ,int , default_var *);
-int get_default(char *, default_var *);
-var_list *make_var_list();
-var_list *make_var_base(var *);
-var_list *append_var_list(var *, var_list *);
-var_list *append_by_var_list(var_list *, var_list *);
-var_list *free_var_list(var_list *);
-int get_var_list_len(var_list *);
-var *find_var(var_list *,int , char *);
-void add_var(var_list *,int , char *, GWARF_value);
-var_list *copy_var_list(var_list *);
+#include "interpreter.h"
 
 var *make_var(){  // make var with base
     var *tmp;

+ 1 - 1
paser/gwarf_lex.l

@@ -1,6 +1,6 @@
 %{
     #include<stdio.h>
-    #include"y.tab.h" 
+    #include"y.tab.h"
     int indentation = 0;
     int tmp_indentation = 0;
     int last_token;

+ 5 - 1
paser/gwarf_yacc.y

@@ -1,7 +1,11 @@
 %{
     #include<stdio.h>
     #include"lex.yy.c"
-    #include"../gwarf_interpreter/interpreter.h"
+
+    #ifndef _INTERPRETER_H
+    #include"../inter/interpreter.h"
+    #endif
+    
     #define yylex yylex_self
     extern int yylex (void);
     // 此处声明:定义的token:INDENTA不会在yacc中被使用,但将会在lex中被使用

Файловите разлики са ограничени, защото са твърде много
+ 172 - 170
paser/y.tab.c


+ 1 - 1
paser/y.tab.h

@@ -161,7 +161,7 @@ extern int yydebug;
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 union YYSTYPE
 {
-#line 10 "gwarf_yacc.y"
+#line 12 "gwarf_yacc.y"
 
     int int_value;
     double double_value;

Някои файлове не бяха показани, защото твърде много файлове са промени