✨ add readline & os.arch
delete test file mandel.nas change io.fin => io.readfile
This commit is contained in:
parent
c858afbb76
commit
f914678311
32
main.cpp
32
main.cpp
|
@ -70,7 +70,7 @@ void err() {
|
||||||
std::exit(1);
|
std::exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void execute(const string& file,const std::vector<string>& argv,const u32 cmd) {
|
void execute(const string& file, const std::vector<string>& argv, const u32 cmd) {
|
||||||
using clk=std::chrono::high_resolution_clock;
|
using clk=std::chrono::high_resolution_clock;
|
||||||
const auto den=clk::duration::period::den;
|
const auto den=clk::duration::period::den;
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ void execute(const string& file,const std::vector<string>& argv,const u32 cmd) {
|
||||||
parse.compile(lex).chkerr();
|
parse.compile(lex).chkerr();
|
||||||
|
|
||||||
// linker gets parser's ast and load import files to this ast
|
// linker gets parser's ast and load import files to this ast
|
||||||
ld.link(parse,file,cmd&VM_DETAIL).chkerr();
|
ld.link(parse, file, cmd&VM_DETAIL).chkerr();
|
||||||
|
|
||||||
// optimizer does simple optimization on ast
|
// optimizer does simple optimization on ast
|
||||||
optimize(parse.tree());
|
optimize(parse.tree());
|
||||||
|
@ -105,9 +105,9 @@ void execute(const string& file,const std::vector<string>& argv,const u32 cmd) {
|
||||||
// run
|
// run
|
||||||
auto start=clk::now();
|
auto start=clk::now();
|
||||||
if (cmd&VM_DEBUG) {
|
if (cmd&VM_DEBUG) {
|
||||||
dbg(err).run(gen,ld,argv);
|
dbg(err).run(gen, ld, argv);
|
||||||
} else if (cmd&VM_TIME || cmd&VM_EXEC) {
|
} else if (cmd&VM_TIME || cmd&VM_EXEC) {
|
||||||
ctx.run(gen,ld,argv,cmd&VM_DETAIL);
|
ctx.run(gen, ld, argv, cmd&VM_DETAIL);
|
||||||
}
|
}
|
||||||
if (cmd&VM_TIME) {
|
if (cmd&VM_TIME) {
|
||||||
f64 tm=(clk::now()-start).count()*1.0/den;
|
f64 tm=(clk::now()-start).count()*1.0/den;
|
||||||
|
@ -115,7 +115,7 @@ void execute(const string& file,const std::vector<string>& argv,const u32 cmd) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 main(i32 argc,const char* argv[]) {
|
i32 main(i32 argc, const char* argv[]) {
|
||||||
// output version info
|
// output version info
|
||||||
if (argc<=1) {
|
if (argc<=1) {
|
||||||
std::clog<<logo;
|
std::clog<<logo;
|
||||||
|
@ -128,7 +128,7 @@ i32 main(i32 argc,const char* argv[]) {
|
||||||
if (s=="-h" || s=="--help") {
|
if (s=="-h" || s=="--help") {
|
||||||
std::clog<<help;
|
std::clog<<help;
|
||||||
} else if (s[0]!='-') {
|
} else if (s[0]!='-') {
|
||||||
execute(s,{},VM_EXEC);
|
execute(s, {}, VM_EXEC);
|
||||||
} else {
|
} else {
|
||||||
err();
|
err();
|
||||||
}
|
}
|
||||||
|
@ -137,12 +137,18 @@ i32 main(i32 argc,const char* argv[]) {
|
||||||
|
|
||||||
// execute with arguments
|
// execute with arguments
|
||||||
const std::unordered_map<string,u32> cmdlst={
|
const std::unordered_map<string,u32> cmdlst={
|
||||||
{"--ast",VM_AST},{"-a",VM_AST},
|
{"--ast",VM_AST},
|
||||||
{"--code",VM_CODE},{"-c",VM_CODE},
|
{"-a",VM_AST},
|
||||||
{"--exec",VM_EXEC},{"-e",VM_EXEC},
|
{"--code",VM_CODE},
|
||||||
{"--time",VM_TIME|VM_EXEC},{"-t",VM_TIME|VM_EXEC},
|
{"-c",VM_CODE},
|
||||||
{"--detail",VM_DETAIL|VM_EXEC},{"-d",VM_DETAIL|VM_EXEC},
|
{"--exec",VM_EXEC},
|
||||||
{"--debug",VM_DEBUG},{"-dbg",VM_DEBUG}
|
{"-e",VM_EXEC},
|
||||||
|
{"--time",VM_TIME|VM_EXEC},
|
||||||
|
{"-t",VM_TIME|VM_EXEC},
|
||||||
|
{"--detail",VM_DETAIL|VM_EXEC},
|
||||||
|
{"-d",VM_DETAIL|VM_EXEC},
|
||||||
|
{"--debug",VM_DEBUG},
|
||||||
|
{"-dbg",VM_DEBUG}
|
||||||
};
|
};
|
||||||
u32 cmd=0;
|
u32 cmd=0;
|
||||||
string filename="";
|
string filename="";
|
||||||
|
@ -159,6 +165,6 @@ i32 main(i32 argc,const char* argv[]) {
|
||||||
if (!filename.length()) {
|
if (!filename.length()) {
|
||||||
err();
|
err();
|
||||||
}
|
}
|
||||||
execute(filename,vm_argv,cmd?cmd:VM_EXEC);
|
execute(filename, vm_argv, cmd?cmd:VM_EXEC);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
1
makefile
1
makefile
|
@ -54,7 +54,6 @@ test:nasal
|
||||||
@ ./nasal -d test/lexer.nas
|
@ ./nasal -d test/lexer.nas
|
||||||
@ ./nasal -d test/life.nas
|
@ ./nasal -d test/life.nas
|
||||||
@ ./nasal -t test/loop.nas
|
@ ./nasal -t test/loop.nas
|
||||||
@ ./nasal -t -d test/mandel.nas
|
|
||||||
@ ./nasal -t test/mandelbrot.nas
|
@ ./nasal -t test/mandelbrot.nas
|
||||||
@ ./nasal -t test/md5.nas
|
@ ./nasal -t test/md5.nas
|
||||||
@ ./nasal -t -d test/md5compare.nas
|
@ ./nasal -t -d test/md5compare.nas
|
||||||
|
|
62
nasal.h
62
nasal.h
|
@ -12,7 +12,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
bool is_windows() {
|
bool is_windows() {
|
||||||
#if defined _WIN32 || defined _WIN64
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
|
@ -35,6 +35,66 @@ bool is_macos() {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool is_x86() {
|
||||||
|
#if defined(__i386__) || defined(_M_IX86)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_amd64() {
|
||||||
|
#if defined(__amd64__) || defined(_M_X64)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_x86_64() {
|
||||||
|
return is_amd64();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_arm() {
|
||||||
|
#if defined(__arm__) || defined(_M_ARM)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_aarch64() {
|
||||||
|
#if defined(__aarch64__) || defined(_M_ARM64)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_ia64() {
|
||||||
|
#if defined(__ia64__)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_powerpc() {
|
||||||
|
#if defined(__powerpc__)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_superh() {
|
||||||
|
#if defined(__sh__)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
using i32=std::int32_t;
|
using i32=std::int32_t;
|
||||||
using i64=std::int64_t;
|
using i64=std::int64_t;
|
||||||
using u8=std::uint8_t;
|
using u8=std::uint8_t;
|
||||||
|
|
|
@ -102,10 +102,10 @@ var builtin_input(var* local,gc& ngc) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
var builtin_fin(var* local,gc& ngc) {
|
var builtin_readfile(var* local,gc& ngc) {
|
||||||
var val=local[1];
|
var val=local[1];
|
||||||
if (val.type!=vm_str) {
|
if (val.type!=vm_str) {
|
||||||
return nas_err("io::fin","\"filename\" must be string");
|
return nas_err("io::readfile","\"filename\" must be string");
|
||||||
}
|
}
|
||||||
std::ifstream in(val.str(),std::ios::binary);
|
std::ifstream in(val.str(),std::ios::binary);
|
||||||
std::stringstream rd;
|
std::stringstream rd;
|
||||||
|
@ -1008,6 +1008,27 @@ var builtin_platform(var* local,gc& ngc) {
|
||||||
return ngc.newstr("unknown");
|
return ngc.newstr("unknown");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var builtin_arch(var* local,gc& ngc) {
|
||||||
|
if (is_x86()) {
|
||||||
|
return ngc.newstr("x86");
|
||||||
|
} else if (is_x86_64()) {
|
||||||
|
return ngc.newstr("x86-64");
|
||||||
|
} else if (is_amd64()) {
|
||||||
|
return ngc.newstr("amd64");
|
||||||
|
} else if (is_arm()) {
|
||||||
|
return ngc.newstr("arm");
|
||||||
|
} else if (is_aarch64()) {
|
||||||
|
return ngc.newstr("aarch64");
|
||||||
|
} else if (is_ia64()) {
|
||||||
|
return ngc.newstr("ia64");
|
||||||
|
} else if (is_powerpc()) {
|
||||||
|
return ngc.newstr("powerpc");
|
||||||
|
} else if (is_superh()) {
|
||||||
|
return ngc.newstr("superh");
|
||||||
|
}
|
||||||
|
return ngc.newstr("unknown");
|
||||||
|
}
|
||||||
|
|
||||||
// md5 related functions
|
// md5 related functions
|
||||||
string tohex(u32 num) {
|
string tohex(u32 num) {
|
||||||
const char str16[]="0123456789abcdef";
|
const char str16[]="0123456789abcdef";
|
||||||
|
@ -1272,7 +1293,7 @@ struct {
|
||||||
{"__setsize", builtin_setsize },
|
{"__setsize", builtin_setsize },
|
||||||
{"__system", builtin_system },
|
{"__system", builtin_system },
|
||||||
{"__input", builtin_input },
|
{"__input", builtin_input },
|
||||||
{"__fin", builtin_fin },
|
{"__readfile",builtin_readfile},
|
||||||
{"__fout", builtin_fout },
|
{"__fout", builtin_fout },
|
||||||
{"__split", builtin_split },
|
{"__split", builtin_split },
|
||||||
{"__rand", builtin_rand },
|
{"__rand", builtin_rand },
|
||||||
|
@ -1343,6 +1364,7 @@ struct {
|
||||||
{"__dlcallv", builtin_dlcallv },
|
{"__dlcallv", builtin_dlcallv },
|
||||||
{"__dlcall", builtin_dlcall },
|
{"__dlcall", builtin_dlcall },
|
||||||
{"__platform",builtin_platform},
|
{"__platform",builtin_platform},
|
||||||
|
{"__arch", builtin_arch },
|
||||||
{"__md5", builtin_md5 },
|
{"__md5", builtin_md5 },
|
||||||
{"__cocreate",builtin_cocreate},
|
{"__cocreate",builtin_cocreate},
|
||||||
{"__coresume",builtin_coresume},
|
{"__coresume",builtin_coresume},
|
||||||
|
|
42
nasal_gc.h
42
nasal_gc.h
|
@ -181,23 +181,10 @@ struct nas_obj {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/* RAII constructor, new object is initialized when creating */
|
/* RAII constructor, new object is initialized when creating */
|
||||||
void file_dtor() {
|
void file_dtor();
|
||||||
fclose((FILE*)ptr);
|
void dir_dtor();
|
||||||
}
|
void dylib_dtor();
|
||||||
void dir_dtor() {
|
|
||||||
#ifndef _MSC_VER
|
|
||||||
closedir((DIR*)ptr);
|
|
||||||
#else
|
|
||||||
FindClose(ptr);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
void dylib_dtor() {
|
|
||||||
#ifdef _WIN32
|
|
||||||
FreeLibrary((HMODULE)ptr);
|
|
||||||
#else
|
|
||||||
dlclose(ptr);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
public:
|
public:
|
||||||
nas_obj():type(obj_type::null),ptr(nullptr) {}
|
nas_obj():type(obj_type::null),ptr(nullptr) {}
|
||||||
~nas_obj() {clear();}
|
~nas_obj() {clear();}
|
||||||
|
@ -359,6 +346,27 @@ void nas_obj::clear() {
|
||||||
ptr=nullptr;
|
ptr=nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nas_obj::file_dtor() {
|
||||||
|
if ((FILE*)ptr==stdin) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fclose((FILE*)ptr);
|
||||||
|
}
|
||||||
|
void nas_obj::dir_dtor() {
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
closedir((DIR*)ptr);
|
||||||
|
#else
|
||||||
|
FindClose(ptr);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
void nas_obj::dylib_dtor() {
|
||||||
|
#ifdef _WIN32
|
||||||
|
FreeLibrary((HMODULE)ptr);
|
||||||
|
#else
|
||||||
|
dlclose(ptr);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void nas_co::clear() {
|
void nas_co::clear() {
|
||||||
for(u32 i=0;i<STACK_DEPTH;++i) {
|
for(u32 i=0;i<STACK_DEPTH;++i) {
|
||||||
stack[i]=var::nil();
|
stack[i]=var::nil();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# lib csv.nas
|
# lib csv.nas
|
||||||
# ValKmjolnir 2022/10/15
|
# ValKmjolnir 2022/10/15
|
||||||
var read_csv=func(path,delimeter=",",endline="\n"){
|
var read_csv=func(path,delimeter=",",endline="\n"){
|
||||||
var context=io.fin(path);
|
var context=io.readfile(path);
|
||||||
context=split(endline,context);
|
context=split(endline,context);
|
||||||
forindex(var i;context){
|
forindex(var i;context){
|
||||||
context[i]=split(delimeter,context[i]);
|
context[i]=split(delimeter,context[i]);
|
||||||
|
|
13
stl/lib.nas
13
stl/lib.nas
|
@ -29,6 +29,12 @@ var input=func(end=nil){
|
||||||
return __input(end);
|
return __input(end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# readline
|
||||||
|
var readline=func(prompt="> ") {
|
||||||
|
print(prompt);
|
||||||
|
return input("\n");
|
||||||
|
}
|
||||||
|
|
||||||
# split a string by separator for example:
|
# split a string by separator for example:
|
||||||
# split("ll","hello world") -> ["he","o world"]
|
# split("ll","hello world") -> ["he","o world"]
|
||||||
# this function will return a vector.
|
# this function will return a vector.
|
||||||
|
@ -291,7 +297,7 @@ var io={
|
||||||
SEEK_CUR:1,
|
SEEK_CUR:1,
|
||||||
SEEK_END:2,
|
SEEK_END:2,
|
||||||
# get content of a file by filename. returns a string.
|
# get content of a file by filename. returns a string.
|
||||||
fin: func(filename){return __fin(filename);},
|
readfile: func(filename){return __readfile(filename);},
|
||||||
# input a string as the content of a file.
|
# input a string as the content of a file.
|
||||||
fout: func(filename,str){return __fout(filename,str);},
|
fout: func(filename,str){return __fout(filename,str);},
|
||||||
# use C access
|
# use C access
|
||||||
|
@ -462,8 +468,9 @@ var dylib={
|
||||||
# windows/macOS/linux are supported.
|
# windows/macOS/linux are supported.
|
||||||
var os={
|
var os={
|
||||||
# get a string that tell which os it runs on.
|
# get a string that tell which os it runs on.
|
||||||
platform: func(){return __platform;},
|
platform: func() {return __platform;},
|
||||||
time: func(){return __logtime; }
|
time: func() {return __logtime;},
|
||||||
|
arch: func() {return __arch;}
|
||||||
};
|
};
|
||||||
|
|
||||||
# runtime gives us some functions that we could manage it manually.
|
# runtime gives us some functions that we could manage it manually.
|
||||||
|
|
|
@ -58,7 +58,7 @@ var calc=func(codetype,files,path=""){
|
||||||
println(codetype);
|
println(codetype);
|
||||||
var (bytes,ctx,line,semi,line_cnt,semi_cnt)=(0,"",0,0,0,0);
|
var (bytes,ctx,line,semi,line_cnt,semi_cnt)=(0,"",0,0,0,0);
|
||||||
forindex(var i;files){
|
forindex(var i;files){
|
||||||
var s=io.exists(path~files[i])?io.fin(path~files[i]):"";
|
var s=io.exists(path~files[i])?io.readfile(path~files[i]):"";
|
||||||
(line_cnt,semi_cnt)=(count(s,'\n'),count(s,';'));
|
(line_cnt,semi_cnt)=(count(s,'\n'),count(s,';'));
|
||||||
println(rightpad(files[i],padding_length),'|',
|
println(rightpad(files[i],padding_length),'|',
|
||||||
column(line_cnt),' line |',
|
column(line_cnt),' line |',
|
||||||
|
|
|
@ -118,7 +118,7 @@ func(diff){
|
||||||
);
|
);
|
||||||
print("\n");
|
print("\n");
|
||||||
diff(
|
diff(
|
||||||
io.fin("test/bf.nas"),
|
io.readfile("test/bf.nas"),
|
||||||
io.fin("test/bfconvertor.nas")
|
io.readfile("test/bfconvertor.nas")
|
||||||
);
|
);
|
||||||
}(myers);
|
}(myers);
|
|
@ -44,11 +44,11 @@ var s=func(){
|
||||||
println(" nasal hexdump.nas [file] | get single file's hexdump.");
|
println(" nasal hexdump.nas [file] | get single file's hexdump.");
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return io.fin(argv[0]);
|
return io.readfile(argv[0]);
|
||||||
}
|
}
|
||||||
var ret="";
|
var ret="";
|
||||||
foreach(var elem;filename)
|
foreach(var elem;filename)
|
||||||
ret~=io.fin(elem);
|
ret~=io.readfile(elem);
|
||||||
return ret;
|
return ret;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ var html_read_file=func(filename){
|
||||||
var timer=maketimestamp();
|
var timer=maketimestamp();
|
||||||
timer.stamp();
|
timer.stamp();
|
||||||
var keyword=["var","func","for","while","foreach","forindex","break","continue","return","if","else","elsif","nil"];
|
var keyword=["var","func","for","while","foreach","forindex","break","continue","return","if","else","elsif","nil"];
|
||||||
var file_text=io.fin(filename);
|
var file_text=io.readfile(filename);
|
||||||
var (s,index,len)=("",-1,size(file_text));
|
var (s,index,len)=("",-1,size(file_text));
|
||||||
var content="";
|
var content="";
|
||||||
|
|
||||||
|
@ -302,7 +302,7 @@ while(1){
|
||||||
var page_back="</pre>\n</body>\n</html>\n";
|
var page_back="</pre>\n</body>\n</html>\n";
|
||||||
http.send(client,respond.ok(page~html_read_file("./test/"~filename)~page_back));
|
http.send(client,respond.ok(page~html_read_file("./test/"~filename)~page_back));
|
||||||
}else{
|
}else{
|
||||||
http.send(client,respond.ok(io.fin("./doc/nasal-http-test-web.html")));
|
http.send(client,respond.ok(io.readfile("./doc/nasal-http-test-web.html")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif(path=="/shutdown"){
|
elsif(path=="/shutdown"){
|
||||||
|
@ -310,11 +310,11 @@ while(1){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
elsif(path=="/favicon.ico")
|
elsif(path=="/favicon.ico")
|
||||||
http.send(client,respond.ok(io.fin("./doc/pic/favicon.ico")));
|
http.send(client,respond.ok(io.readfile("./doc/pic/favicon.ico")));
|
||||||
elsif(path=="/license")
|
elsif(path=="/license")
|
||||||
http.send(client,respond.ok(io.fin("./LICENSE")));
|
http.send(client,respond.ok(io.readfile("./LICENSE")));
|
||||||
elsif(path=="/doc/pic/nasal.png" or path=="/doc/pic/benchmark.png" or path=="/doc/pic/mandelbrot.png")
|
elsif(path=="/doc/pic/nasal.png" or path=="/doc/pic/benchmark.png" or path=="/doc/pic/mandelbrot.png")
|
||||||
http.send(client,respond.ok(io.fin("."~path)));
|
http.send(client,respond.ok(io.readfile("."~path)));
|
||||||
else{
|
else{
|
||||||
var filename=substr(path,1,size(path)-1);
|
var filename=substr(path,1,size(path)-1);
|
||||||
if(contains(files,filename)){
|
if(contains(files,filename)){
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
var lexer=func(file)
|
var lexer=func(file)
|
||||||
{
|
{
|
||||||
var (ptr,token)=(0,[]);
|
var (ptr,token)=(0,[]);
|
||||||
var s=io.fin(file);
|
var s=io.readfile(file);
|
||||||
var len=size(s);
|
var len=size(s);
|
||||||
var line=0;
|
var line=0;
|
||||||
var gen=func(tok){
|
var gen=func(tok){
|
||||||
|
|
|
@ -70,7 +70,7 @@ var ppm_gen=func(width,height){
|
||||||
var init=func(){
|
var init=func(){
|
||||||
var res=new_map();
|
var res=new_map();
|
||||||
if(io.exists(".life_data")) {
|
if(io.exists(".life_data")) {
|
||||||
var vec=split("\n",io.fin(".life_data"));
|
var vec=split("\n",io.readfile(".life_data"));
|
||||||
if (num(vec[0])!=width or num(vec[1])!=height) {
|
if (num(vec[0])!=width or num(vec[1])!=height) {
|
||||||
die("incorrect width or height: "~vec[0]~":"~str(width)~" / "~vec[1]~":"~str(height))
|
die("incorrect width or height: "~vec[0]~":"~str(width)~" / "~vec[1]~":"~str(height))
|
||||||
}
|
}
|
||||||
|
|
4121
test/mandel.nas
4121
test/mandel.nas
File diff suppressed because it is too large
Load Diff
|
@ -67,7 +67,7 @@ var filechecksum=func(){
|
||||||
timestamp.stamp();
|
timestamp.stamp();
|
||||||
var bar=process_bar.high_resolution_bar(40);
|
var bar=process_bar.high_resolution_bar(40);
|
||||||
forindex(var i;files){
|
forindex(var i;files){
|
||||||
var f=io.fin(files[i]);
|
var f=io.readfile(files[i]);
|
||||||
var res=md5(f);
|
var res=md5(f);
|
||||||
byte+=size(f);
|
byte+=size(f);
|
||||||
if(cmp(res,_md5(f))){
|
if(cmp(res,_md5(f))){
|
||||||
|
|
|
@ -11,7 +11,7 @@ if(is_windows_platform){
|
||||||
var cpu_stat=func(){
|
var cpu_stat=func(){
|
||||||
if(is_windows_platform or is_macos_platform)
|
if(is_windows_platform or is_macos_platform)
|
||||||
return nil;
|
return nil;
|
||||||
var cpu=split("\n",io.fin("/proc/stat"))[0];
|
var cpu=split("\n",io.readfile("/proc/stat"))[0];
|
||||||
cpu=split(" ",cpu);
|
cpu=split(" ",cpu);
|
||||||
cpu={
|
cpu={
|
||||||
name:cpu[0],
|
name:cpu[0],
|
||||||
|
@ -54,7 +54,7 @@ var cpu_occupation=func(){
|
||||||
var mem_occupation=func(){
|
var mem_occupation=func(){
|
||||||
if(is_windows_platform or is_macos_platform)
|
if(is_windows_platform or is_macos_platform)
|
||||||
return {MemTotal:math.inf,MemFree:math.inf};
|
return {MemTotal:math.inf,MemFree:math.inf};
|
||||||
var meminfo=split("\n",io.fin("/proc/meminfo"));
|
var meminfo=split("\n",io.readfile("/proc/meminfo"));
|
||||||
var mem_res={};
|
var mem_res={};
|
||||||
forindex(var i;meminfo){
|
forindex(var i;meminfo){
|
||||||
var tmp=split(" ",meminfo[i])[0:1];
|
var tmp=split(" ",meminfo[i])[0:1];
|
||||||
|
@ -149,7 +149,7 @@ func(){
|
||||||
cpu_occupation_log[-1]=cpu_occ;
|
cpu_occupation_log[-1]=cpu_occ;
|
||||||
mem_occupation_log[-1]=mem_occ;
|
mem_occupation_log[-1]=mem_occ;
|
||||||
|
|
||||||
println("\e[1;1H\e[1m Operating system : \e[0m",is_windows_platform?"\e[31m":"\e[36m",os.platform(),"\e[0m");
|
println("\e[1;1H\e[1m Operating system : \e[0m",is_windows_platform?"\e[31m":"\e[36m",os.platform()," ",os.arch(),"\e[0m");
|
||||||
println("\e[2;1H\e[1m Current time : \e[0m\e[36m",os.time(),"\e[0m");
|
println("\e[2;1H\e[1m Current time : \e[0m\e[36m",os.time(),"\e[0m");
|
||||||
println("\e[3;1H\e[1m Memory total(GB) : \e[0m\e[36m",mem.MemTotal/1024/1024,"\e[0m");
|
println("\e[3;1H\e[1m Memory total(GB) : \e[0m\e[36m",mem.MemTotal/1024/1024,"\e[0m");
|
||||||
println("\e[4;1H\e[1m Memory free(GB) : \e[0m\e[36m",mem.MemFree/1024/1024,"\e[0m");
|
println("\e[4;1H\e[1m Memory free(GB) : \e[0m\e[36m",mem.MemFree/1024/1024,"\e[0m");
|
||||||
|
|
|
@ -55,7 +55,7 @@ func(argv){
|
||||||
}
|
}
|
||||||
var file_content="";
|
var file_content="";
|
||||||
foreach(var f;argv)
|
foreach(var f;argv)
|
||||||
file_content~=io.fin(f)~" ";
|
file_content~=io.readfile(f)~" ";
|
||||||
var vec=keys(spliter(file_content));
|
var vec=keys(spliter(file_content));
|
||||||
sort(vec,func(a,b){return cmp(a,b)<=0;});
|
sort(vec,func(a,b){return cmp(a,b)<=0;});
|
||||||
println(vec);
|
println(vec);
|
||||||
|
|
Loading…
Reference in New Issue