From 09b15587a89aae5d8e8baf6d9f831ec7c1b4141d Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Tue, 8 Oct 2019 07:07:25 -0500 Subject: [PATCH] Add (var ids)=[]; --- nasal_parser.h | 1100 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1100 insertions(+) create mode 100644 nasal_parser.h diff --git a/nasal_parser.h b/nasal_parser.h new file mode 100644 index 0000000..7c1ebe3 --- /dev/null +++ b/nasal_parser.h @@ -0,0 +1,1100 @@ +#ifndef __NASAL_PARSER_H__ +#define __NASAL_PARSER_H__ + +#include "nasal_token_type.h" + +class nasal_parser +{ + private: + ast_tree_node root; + std::stack parse; + std::stack node_cache; + token this_token; + int error; + int warning; + public: + nasal_parser() + { + error=0; + warning=0; + this_token.type=0; + } + void get_token() + { + if(parse.empty()) + { + this_token.type=0; + return; + } + this_token=parse.top(); + parse.pop(); + return; + } + void print_parser_stack() + { + if(parse.empty()) + return; + int line=0; + std::stack temp; + while(!parse.empty()) + { + temp.push(parse.top()); + if(line!=temp.top().line) + { + if(line+1==temp.top().line) + { + line=temp.top().line; + if(line==1) + std::cout<<"line "< "; + parse.pop(); + } + while(!temp.empty()) + { + parse.push(temp.top()); + temp.pop(); + } + std::cout<& lexer) + { + while(!parse.empty()) + parse.pop(); + std::stack temp; + for(std::list::iterator i=lexer.begin();i!=lexer.end();++i) + { + token temp_parse; + temp_parse=*i; + temp.push(temp_parse);//push this into stack + } + if(temp.empty()) + { + std::cout<<">>[Parse] [-Warning] Empty lexer list."<>[Abstract-syntax-tree]"<>[Parse] "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Error] line "<>[Parse] complete generation."<