From 36353389f807bfa3a21095beda68f401e4b2e8db Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Wed, 25 Sep 2019 06:54:17 -0500 Subject: [PATCH] Prepare for running --- version1.0/call_ide.txt | 7 +++++- version1.0/main.cpp | 4 +-- version1.0/nasal.h | 3 +++ version1.0/nasal_parser.h | 6 +++-- version1.0/nasal_var.cpp | 53 +++++++++++++++++++++++++++++++++++++++ version1.0/nasal_var.h | 49 ++++++++++++++++++++++++++++++++++++ 6 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 version1.0/nasal_var.cpp create mode 100644 version1.0/nasal_var.h diff --git a/version1.0/call_ide.txt b/version1.0/call_ide.txt index 8ba4b94..b45b492 100644 --- a/version1.0/call_ide.txt +++ b/version1.0/call_ide.txt @@ -17,4 +17,9 @@ id(); id.id(); id.id.id(); id[0].id.id(id,"str",1,2,3,4).id[10]; -id(0)[1].id; \ No newline at end of file +id(0)[1].id; +var hash={ + h:"hello", + parent:[id], +}; +function_test([1,2,3,4,55],1,2,3,{str:"str"}); \ No newline at end of file diff --git a/version1.0/main.cpp b/version1.0/main.cpp index 80d659c..00f000a 100644 --- a/version1.0/main.cpp +++ b/version1.0/main.cpp @@ -60,7 +60,7 @@ int main() lex.lexer_process(prog.use_file()); lex.token_list_type_detail_edit(); pas.parse_process(lex.return_list()); -// pas.gen_main_prog(); + pas.parse_main_work(); pas.print_ast(); } else if(command=="run") @@ -68,7 +68,7 @@ int main() lex.lexer_process(prog.use_file()); lex.token_list_type_detail_edit(); pas.parse_process(lex.return_list()); -// pas.gen_main_prog(); + pas.parse_main_work(); pas.run(); } else diff --git a/version1.0/nasal.h b/version1.0/nasal.h index 6aedf61..73cc2d4 100644 --- a/version1.0/nasal.h +++ b/version1.0/nasal.h @@ -10,8 +10,11 @@ #include "nasal_token_type.h" #include "abstract_syntax_tree.h" +#include "nasal_var.h" #include "nasal_lexer.h" #include "nasal_parser.h" +#include "nasal_var.cpp" + #endif diff --git a/version1.0/nasal_parser.h b/version1.0/nasal_parser.h index 9dcc939..34160bf 100644 --- a/version1.0/nasal_parser.h +++ b/version1.0/nasal_parser.h @@ -356,8 +356,8 @@ void nasal_parser::definition_expr() else if(this_token.type==__semi) { parse.push(this_token);// for semi check - ++warning; - std::cout<<">>[Warning] line "<>[Warning] line "<>[Error] line "< +#include + +enum var_type +{ + var_null=0xaa55, + var_number, + var_string, + var_list, + var_hash +}; + +class nasal_list; +class nasal_hash; + +class var +{ + private: + void* ptr; + int type; + public: + var(); + var(const var&); + ~var(); +}; + +class nasal_list +{ + private: + std::list elem; + public: + nasal_list(); + nasal_list(const nasal_list&); +}; + +class nasal_hash +{ + private: + std::list elem; + std::list elem_name; + public: + nasal_hash(); + nasal_hash(const nasal_hash&); +}; + +#endif