diff --git a/README.md b/README.md index f8a7684..a6d708c 100644 --- a/README.md +++ b/README.md @@ -811,7 +811,7 @@ Finally i learned `LL(1)` and `LL(k)` and wrote a parser for math formulas in ve In version 0.17(2019/9/15) 0.18(2019/9/18) 0.19(2019/10/1)i was playing the parser happily and after that i wrote version 1.0. -__This project began at 2019/8/31__. +__This project began at 2019/7/25__. ## __Abstract Syntax Tree__ diff --git a/nasal_builtin.h b/nasal_builtin.h index 20f9c45..80fbf3b 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -399,8 +399,11 @@ nasal_ref builtin_str(nasal_ref* local,nasal_gc& gc) nasal_ref val=local[1]; if(val.type!=vm_num) return builtin_err("str","\"number\" must be number"); + std::string tmp=std::to_string(val.num()); + tmp.erase(tmp.find_last_not_of('0')+1,std::string::npos); + tmp.erase(tmp.find_last_not_of('.')+1,std::string::npos); nasal_ref ret=gc.alloc(vm_str); - *ret.str()=std::to_string(val.num()); + *ret.str()=tmp; return ret; } nasal_ref builtin_size(nasal_ref* local,nasal_gc& gc) diff --git a/nasal_gc.h b/nasal_gc.h index 1a7fe3a..8989b9c 100644 --- a/nasal_gc.h +++ b/nasal_gc.h @@ -312,7 +312,12 @@ std::string nasal_ref::to_string() if(type==vm_str) return *str(); else if(type==vm_num) - return std::to_string(num()); + { + std::string tmp=std::to_string(num()); + tmp.erase(tmp.find_last_not_of('0')+1,std::string::npos); + tmp.erase(tmp.find_last_not_of('.')+1,std::string::npos); + return tmp; + } return ""; } void nasal_ref::print() diff --git a/test/ascii-art.nas b/test/ascii-art.nas index 0ffee44..d44c8da 100644 --- a/test/ascii-art.nas +++ b/test/ascii-art.nas @@ -116,15 +116,15 @@ var curve4=func() } var curve5=func(){ for(var i=0;i<=9;i+=1) - println(i,"\e["~split(".",str(i))[0]~"mh \e[0m"); + println(i,"\e["~i~"mh \e[0m"); for(var i=30;i<=37;i+=1) - println(i,"\e["~split(".",str(i))[0]~"mh \e[0m"); + println(i,"\e["~i~"mh \e[0m"); for(var i=40;i<=47;i+=1) - println(i,"\e["~split(".",str(i))[0]~"mh \e[0m"); + println(i,"\e["~i~"mh \e[0m"); for(var i=90;i<=97;i+=1) - println(i,"\e["~split(".",str(i))[0]~"mh \e[0m"); + println(i,"\e["~i~"mh \e[0m"); for(var i=100;i<=107;i+=1) - println(i,"\e["~split(".",str(i))[0]~"mh \e[0m"); + println(i,"\e["~i~"mh \e[0m"); } var curve6=func(){ var shadow=["m░\e[0m","m▒\e[0m","m▓\e[0m","m█\e[0m","m▀\e[0m","m▄\e[0m","m▐\e[0m","m▌\e[0m"];