📝 unify code style of ./stl ./test

This commit is contained in:
ValKmjolnir
2022-07-02 13:53:50 +08:00
parent c993c77b78
commit 8b8fb79013
20 changed files with 200 additions and 375 deletions
+35 -67
View File
@@ -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;
}