#ifndef __NASAL_TOKEN_H__
#define __NASAL_TOKEN_H__

#include "nasal_var.h"

//for token and lexer
#define OPERATOR    1 //界符 or 运算符 
#define IDENTIFIER  2 //自定义标识符 
#define NUMBER      3 //数字 
#define RESERVEWORD 4 //关键字 
#define STRING      5 //字符串类型 

struct token_unit
{
	int type;
	std::string content;
	int line;
	token_unit *next;
};

class token_list
{
	private:
		token_unit *head;
		int list_range;
	public:
		token_list();
		~token_list();
		token_unit* get_head();
		int get_list_range();
		void print_line_token(const int);
		void delete_all();
		void append(const int,const int,std::string&);
		void print();
};

token_list nasal_lexer;
#endif
