diff --git a/version0.11/a.txt b/version0.11/a.txt index 3b13928..c83960b 100644 --- a/version0.11/a.txt +++ b/version0.11/a.txt @@ -44,7 +44,10 @@ forindex(e;m) var e=2; } } - +while((a>1) and (a<100)) +{ + a-=1; +} diff --git a/version0.11/nasal_lexer.h b/version0.11/nasal_lexer.h index 9b93aa3..d2e0958 100644 --- a/version0.11/nasal_lexer.h +++ b/version0.11/nasal_lexer.h @@ -18,6 +18,7 @@ #define DYNAMIC_ID 10 // id... #define IF_HEAD 11 // if ( #define ELSIF_HEAD 12 // elsif ( +#define WHILE_HEAD 13 // while ( #define FAIL -1 //fail #define SCANEND -2 //complete scanning #define ERRORFOUND -3 //error occurred @@ -190,7 +191,7 @@ class nasal_lexer } ++ptr; } - else if((syn==RESERVEWORD) && ((__token=="func") || (__token=="if") || (__token=="elsif")) && (source[ptr]=='(')) + else if((syn==RESERVEWORD) && ((__token=="func") || (__token=="if") || (__token=="elsif") || (__token=="while")) && (source[ptr]=='(')) { if(__token=="func") syn=FUNC_HEAD; @@ -198,6 +199,8 @@ class nasal_lexer syn=IF_HEAD; else if(__token=="elsif") syn=ELSIF_HEAD; + else if(__token=="while") + syn=WHILE_HEAD; __token+=source[ptr]; ++ptr; } @@ -407,6 +410,8 @@ class nasal_lexer std::cout<<"( If head | "; else if(temp.type==ELSIF_HEAD) std::cout<<"( Elsif head | "; + else if(temp.type==WHILE_HEAD) + std::cout<<"( While head | "; std::cout<