Delete ast.h
This commit is contained in:
parent
828e553530
commit
10b1b31314
|
@ -1,82 +0,0 @@
|
||||||
#ifndef __AST_H__
|
|
||||||
#define __AST_H__
|
|
||||||
|
|
||||||
#include "token_type.h"
|
|
||||||
#include <stack>
|
|
||||||
#include <list>
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
enum tree_node_type
|
|
||||||
{
|
|
||||||
__syntax_tree_begin=128,
|
|
||||||
__error_syntax,
|
|
||||||
__null_statement,
|
|
||||||
__definition,
|
|
||||||
__assignment,
|
|
||||||
__loop,
|
|
||||||
__choose
|
|
||||||
};
|
|
||||||
|
|
||||||
struct node
|
|
||||||
{
|
|
||||||
int type;
|
|
||||||
int line;
|
|
||||||
std::string content;
|
|
||||||
std::list<node> children;
|
|
||||||
};
|
|
||||||
|
|
||||||
class abstract_syntax_tree
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
node tree;
|
|
||||||
std::stack<parse_unit> parser_stack;
|
|
||||||
public:
|
|
||||||
abstract_syntax_tree()
|
|
||||||
{
|
|
||||||
tree.type=__syntax_tree_begin;
|
|
||||||
tree.line=0;
|
|
||||||
tree.content="";
|
|
||||||
tree.children.clear();
|
|
||||||
}
|
|
||||||
void init_parser_stack(std::stack<parse_unit>& temp)
|
|
||||||
{
|
|
||||||
parser_stack=temp;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void tree_generator(std::list<int>& error_list)
|
|
||||||
{
|
|
||||||
while(!parser_stack.empty())
|
|
||||||
{
|
|
||||||
int type=parser_stack.top().type;
|
|
||||||
node child_node;
|
|
||||||
child_node.line=parser_stack.top().line;
|
|
||||||
child_node.content="";
|
|
||||||
child_node.children.clear();
|
|
||||||
switch(type)
|
|
||||||
{
|
|
||||||
case __var:break;
|
|
||||||
case __id:break;
|
|
||||||
case __number:break;
|
|
||||||
case __string:break;
|
|
||||||
case __if:break;
|
|
||||||
case __for:break;
|
|
||||||
case __forindex:break;
|
|
||||||
case __foreach:break;
|
|
||||||
case __while:break;
|
|
||||||
case __semi:child_node.type=__null_statement;break;
|
|
||||||
default:child_node.type=__error_syntax;break;
|
|
||||||
}
|
|
||||||
if(child_node.type==__error_syntax)
|
|
||||||
error_list.push_back(parser_stack.top().line);
|
|
||||||
parser_stack.pop();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
void run()
|
|
||||||
{
|
|
||||||
;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue