forked from xxq250/Nasal-Interpreter
📝 unify code style of ./stl ./test
This commit is contained in:
+35
-67
@@ -4,28 +4,23 @@ var lexer=func(file)
|
||||
var s=io.fin(file);
|
||||
var len=size(s);
|
||||
var line=0;
|
||||
var gen=func(tok)
|
||||
{
|
||||
var gen=func(tok){
|
||||
append(token,{
|
||||
line:line,
|
||||
token:tok
|
||||
});
|
||||
}
|
||||
return
|
||||
{
|
||||
jmp_note:func()
|
||||
{
|
||||
return {
|
||||
jmp_note:func(){
|
||||
while(ptr<len and s[ptr]!='\n'[0])
|
||||
ptr+=1;
|
||||
if(ptr<len and s[ptr]=='\n'[0])
|
||||
line+=1;
|
||||
ptr+=1;
|
||||
},
|
||||
id_gen:func()
|
||||
{
|
||||
id_gen:func(){
|
||||
var tmp="";
|
||||
while(ptr<len)
|
||||
{
|
||||
while(ptr<len){
|
||||
var c=s[ptr];
|
||||
if(('a'[0]<=c and c<='z'[0])
|
||||
or ('A'[0]<=c and c<='Z'[0])
|
||||
@@ -38,15 +33,12 @@ var lexer=func(file)
|
||||
}
|
||||
gen(tmp);
|
||||
},
|
||||
str_gen:func()
|
||||
{
|
||||
str_gen:func(){
|
||||
var str="";
|
||||
var mark=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
while(ptr<len and chr(s[ptr])!=mark)
|
||||
{
|
||||
if(chr(s[ptr])=='\\')
|
||||
{
|
||||
while(ptr<len and chr(s[ptr])!=mark){
|
||||
if(chr(s[ptr])=='\\'){
|
||||
ptr+=1;
|
||||
var c=chr(s[ptr]);
|
||||
if (c=='a' ) str~='\a';
|
||||
@@ -63,9 +55,7 @@ var lexer=func(file)
|
||||
elsif(c=='\'') str~='\'';
|
||||
elsif(c=='\"') str~='\"';
|
||||
else str~=c;
|
||||
}
|
||||
else
|
||||
{
|
||||
}else{
|
||||
if(s[ptr]=='\n'[0])
|
||||
line+=1;
|
||||
str~=chr(s[ptr]);
|
||||
@@ -77,60 +67,48 @@ var lexer=func(file)
|
||||
ptr+=1;
|
||||
gen(str);
|
||||
},
|
||||
num_gen:func()
|
||||
{
|
||||
num_gen:func(){
|
||||
var number=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
if(ptr<len and chr(s[ptr])=='x')
|
||||
{
|
||||
if(ptr<len and chr(s[ptr])=='x'){
|
||||
ptr+=1;
|
||||
while(ptr<len and
|
||||
('a'[0]<=s[ptr] and s[ptr]<='f'[0]
|
||||
or '0'[0]<=s[ptr] and s[ptr]<='9'[0]))
|
||||
{
|
||||
or '0'[0]<=s[ptr] and s[ptr]<='9'[0])){
|
||||
number~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
}
|
||||
gen(num(number));
|
||||
return;
|
||||
}elsif(ptr<len and chr(s[ptr])=='o'){
|
||||
ptr+=1;
|
||||
while(ptr<len and ('0'[0]<=s[ptr] and s[ptr]<='7'[0])){
|
||||
number~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
}
|
||||
gen(num(number));
|
||||
return;
|
||||
}
|
||||
elsif(ptr<len and chr(s[ptr])=='o')
|
||||
{
|
||||
ptr+=1;
|
||||
while(ptr<len and ('0'[0]<=s[ptr] and s[ptr]<='7'[0]))
|
||||
{
|
||||
number~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
}
|
||||
gen(num(number));
|
||||
return;
|
||||
}
|
||||
while(ptr<len and ('0'[0]<=s[ptr] and s[ptr]<='9'[0]))
|
||||
{
|
||||
while(ptr<len and ('0'[0]<=s[ptr] and s[ptr]<='9'[0])){
|
||||
number~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
}
|
||||
if(ptr<len and chr(s[ptr])=='.')
|
||||
{
|
||||
if(ptr<len and chr(s[ptr])=='.'){
|
||||
number~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
while(ptr<len and ('0'[0]<=s[ptr] and s[ptr]<='9'[0]))
|
||||
{
|
||||
while(ptr<len and ('0'[0]<=s[ptr] and s[ptr]<='9'[0])){
|
||||
number~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
}
|
||||
}
|
||||
if(chr(s[ptr])=='e' or chr(s[ptr])=='E')
|
||||
{
|
||||
if(chr(s[ptr])=='e' or chr(s[ptr])=='E'){
|
||||
number~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
if(chr(s[ptr])=='-' or chr(s[ptr])=='+')
|
||||
{
|
||||
if(chr(s[ptr])=='-' or chr(s[ptr])=='+'){
|
||||
number~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
}
|
||||
while(ptr<len and ('0'[0]<=s[ptr] and s[ptr]<='9'[0]))
|
||||
{
|
||||
while(ptr<len and ('0'[0]<=s[ptr] and s[ptr]<='9'[0])){
|
||||
number~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
}
|
||||
@@ -140,30 +118,23 @@ var lexer=func(file)
|
||||
println("error number: ",number);
|
||||
gen(num(number));
|
||||
},
|
||||
opr_gen:func()
|
||||
{
|
||||
opr_gen:func(){
|
||||
var c=chr(s[ptr]);
|
||||
if(c=='+' or c=='-' or c=='~' or c=='/' or c=='*' or c=='>' or c=='<' or c=='!' or c=='=')
|
||||
{
|
||||
if(c=='+' or c=='-' or c=='~' or c=='/' or c=='*' or c=='>' or c=='<' or c=='!' or c=='='){
|
||||
var tmp=c;
|
||||
ptr+=1;
|
||||
if(ptr<len and chr(s[ptr])=='=')
|
||||
{
|
||||
if(ptr<len and chr(s[ptr])=='='){
|
||||
tmp~=chr(s[ptr]);
|
||||
ptr+=1;
|
||||
}
|
||||
gen(tmp);
|
||||
return;
|
||||
}
|
||||
elsif(c=='.')
|
||||
{
|
||||
if(ptr+2<len and chr(s[ptr+1])=='.' and chr(s[ptr+2])=='.')
|
||||
{
|
||||
}elsif(c=='.'){
|
||||
if(ptr+2<len and chr(s[ptr+1])=='.' and chr(s[ptr+2])=='.'){
|
||||
gen("...");
|
||||
ptr+=3;
|
||||
}
|
||||
else
|
||||
{
|
||||
else{
|
||||
gen(".");
|
||||
ptr+=1;
|
||||
}
|
||||
@@ -174,16 +145,13 @@ var lexer=func(file)
|
||||
ptr+=1;
|
||||
return;
|
||||
},
|
||||
compile:func()
|
||||
{
|
||||
compile:func(){
|
||||
line=1;
|
||||
while(ptr<len)
|
||||
{
|
||||
while(ptr<len){
|
||||
var c=s[ptr];
|
||||
if(c=='#'[0])
|
||||
me.jmp_note();
|
||||
elsif(c=='\n'[0])
|
||||
{
|
||||
elsif(c=='\n'[0]){
|
||||
line+=1;
|
||||
ptr+=1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user