From 6fbaecfc0c0c2627663d844f7eadb5ac7e37b4bd Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Thu, 26 Sep 2019 20:00:44 +0800 Subject: [PATCH] Delete nasal_lexer.h --- version0.2/nasal_lexer.h | 274 --------------------------------------- 1 file changed, 274 deletions(-) delete mode 100644 version0.2/nasal_lexer.h diff --git a/version0.2/nasal_lexer.h b/version0.2/nasal_lexer.h deleted file mode 100644 index 0a8b149..0000000 --- a/version0.2/nasal_lexer.h +++ /dev/null @@ -1,274 +0,0 @@ -#ifndef __NASAL_LEXER_H__ -#define __NASAL_LEXER_H__ - - -#include -#include -#include -#include "nasal_functional.h" - -#define FAIL -1 //ʧ°Ü -#define SCANEND -2 //ɨÃèÍê³É -#define ERRORFOUND -3 //Òì³£´íÎó - -std::string ReserveWord[26]= -{ - "for","foreach","forindex","while", - "var","func","break","continue","return", - "if","else","elsif","nil","and","or", - "print","cmp","append","setsize","subvec","pop", - "sort","contains","delete","keys","typeof" -}; - -std::string OperatorOrDelimiter[40]= -{ - "+","-","*","/","=","+=","-=","*=","/=", - "\n","\t","\r","\\","\'","\"",".", - "<","<=",">",">=","==","!=","~=","!","~", - ",",";","(",")","[","]","{","}","#","?",":", - "&","|","%","^" -}; - -std::string IdentifierTable[1000]={""}; -char ResourceProgram[16777216]; - -int isReserveWord(std::string &p) -{ - for(int i=0;i<26;++i) - if(ReserveWord[i]==p) - return i+1; - return FAIL; -} - -int isOperatorOrDelimiter(std::string &p) -{ - for(int i=0;i<40;++i) - if(OperatorOrDelimiter[i]==p) - return i+1; - return FAIL; -} - -bool isLetter(char t) -{ - return (('a'<=t) && (t<='z') || ('A'<=t) && (t<='Z')); -} - -bool isNumber(char t) -{ - return (('0'<=t) && (t<='9')); -} - -void InputFile(std::string &FileName) -{ - std::ifstream fin(FileName); - int i=0; - bool FindNote=false; - while(!fin.eof()) - { - ResourceProgram[i]=fin.get(); - if(ResourceProgram[i]=='\n') - FindNote=false; - if(ResourceProgram[i]!='#' && !FindNote) - ++i; - else if(ResourceProgram[i]=='#') - { - FindNote=true; - } - if(fin.eof()) - break; - } - ResourceProgram[i]=0; - - fin.close(); - return; -} - -void PrintSourceFile() -{ - int line=1; - std::cout<127) - { - ++ptr; - if(temp=='\n') - ++line; - temp=Source[ptr]; - } - - token=""; - if(isLetter(temp) || temp=='_') - { - token+=temp; - ++ptr; - temp=Source[ptr]; - while(isLetter(temp) || isNumber(temp) || temp=='_') - { - token+=temp; - ++ptr; - temp=Source[ptr]; - } - Syn=isReserveWord(token); - if(Syn==FAIL) - Syn=IDENTIFIER; - else - Syn=RESERVEWORD; - } - else if(isNumber(temp)) - { - int PointCnt=0; - while(isNumber(temp)) - { - token+=temp; - ++ptr; - temp=Source[ptr]; - if(temp=='.' && !PointCnt) - { - ++PointCnt; - token+=temp; - ++ptr; - temp=Source[ptr]; - } - } - Syn=NUMBER; - } - else if(temp=='(' || temp==')' || temp=='[' || temp==']' || temp=='{' || - temp=='}' || temp==',' || temp==';' || temp=='|' || temp==':' || - temp=='?' || temp=='.' || temp=='`' || temp=='\'' || temp=='&'|| - temp=='%' || temp=='$' || temp=='^') - { - token+=temp; - ++ptr; - Syn=OPERATOR; - } - else if(temp=='=' || temp=='+' || temp=='-' || temp=='*' || temp=='!' || temp=='/' || temp=='<' || temp=='>' || temp=='~') - { - Syn=OPERATOR; - token+=temp; - ++ptr; - temp=Source[ptr]; - if(temp=='=') - { - token+=temp; - ++ptr; - } - } - else if(temp=='\\') - { - Syn=OPERATOR; - token+=temp; - ++ptr; - temp=Source[ptr]; - if(temp=='=' || temp=='n' || temp=='t' || temp=='r' || temp=='\\' || temp=='\'' || temp=='\"') - { - token+=temp; - ++ptr; - } - } - else if(temp=='\"') - { - Syn=STRING; - token+=temp; - ++ptr; - temp=Source[ptr]; - while(temp!='\"') - { - if(temp=='\\') - { - token+=temp; - - ++ptr; - temp=Source[ptr]; - token+=temp; - - ++ptr; - temp=Source[ptr]; - } - else - { - token+=temp; - ++ptr; - temp=Source[ptr]; - } - if(temp==0 || temp=='\n') - break; - } - //add the last char \" - if(temp=='\"') - { - token+=temp; - ++ptr; - } - else - token+=" __missing_end_of_string"; - } - else if(temp==0) - { - Syn=SCANEND; - return; - } - else - { - Syn=FAIL; - std::cout<<"[Error] Unexpected error occurred: "<0)//all Syn type is larger than zero - nasal_lexer.append(line,Syn,token); - } - //nasal_lexer.print(); //for debug mode - std::cout<<">> Complete scanning \""<