diff --git a/bfvm/.keep b/bfvm/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/bfvm/bfvm.els b/bfvm/bfvm.els new file mode 100644 index 0000000000000000000000000000000000000000..cce4f75e54d683cf8fc06de38e7d0e7e62dca8e3 --- /dev/null +++ b/bfvm/bfvm.els @@ -0,0 +1,55 @@ +#!/bin/losu +Bfvm = { + class = def(self,code): + return { + code = code, + mem = {}, + pos = 1, + pc = 1, + run = self.run, + doloop = self.doloop, + } + ;, + run = def(self): + var i + with self.code[self.pc] != '\0': + i = self.code[self.pc] + if i == '>': + self.pos = self.pos + 1 + elif i == '<': + self.pos = self.pos - 1 + elif i == '+': + self.mem[self.pos] = (self.mem[self.pos] or 0) + 1 + elif i == '-': + self.mem[self.pos] = (self.mem[self.pos] or 0) - 1 + elif i == '.': + printl(char(self.mem[self.pos])) + elif i == '[': + if self.mem[self.pos] == 0: + self.doloop(1) + pass + elif i == ']': + if self.mem[self.pos] != 0: + self.doloop(-1) + pass + pass + self.pc = self.pc + 1 + pass + ;, + doloop = def(self,inc): + var i = inc + var a + with i!=0: + a = self.code[self.pc+inc] + if a == '[': + i = i + 1 + elif a == ']': + i = i - 1 + pass + self.pc = self.pc + inc + pass + ;, +} + +vm = new(Bfvm, "++++++++++[>++++++++++<-]>++++.+.") +vm.run() diff --git a/wiki/package/stdbyte.md b/wiki/package/stdbyte.md new file mode 100644 index 0000000000000000000000000000000000000000..1b5977a959c4810a906be100e6f94302af445841 --- /dev/null +++ b/wiki/package/stdbyte.md @@ -0,0 +1,33 @@ +# stdbyte +## 导入模块 +``` python +import "stdbyte" +``` +## 简介 +- byte对象中包含了create子对象,create子对象能够调用bystr()、bynum()、byint()方法,实现从字符串、number、整数转换为byte的功能 +- byte对象能够调用tostr()、tonum()、toint()方法,实现byte转换为字符串、number、整数的功能 +## 功能 + +|原型|返回值|功能| +|:-----:|:-----:|:-----:| +|byte.create.bystr()|byte|从字符串创建 byte| +|byte.create.bynum()|byte|从数字 (Number) 创建 byte| +|byte.create.byint()|byte|从整数 (int) 创建 byte| +|byte.tostr()|string|转换为字符串| +|byte.tonum()|number|转换为 number| +|byte.toint()|int|转换为 整数| +## 样例 + +``` python +import "stdbyte" + +byte.create.bystr("Hello") + +byte.create.bynum(2024.22) + +b=byte.create.byint(2024) + +a=byte.tostr("Hello") + +print(type(b)) +``` diff --git a/wiki/package/stdfile.md b/wiki/package/stdfile.md new file mode 100644 index 0000000000000000000000000000000000000000..3dbc0f24eb44cf24f5c54816b93ed7b9260f9d7e --- /dev/null +++ b/wiki/package/stdfile.md @@ -0,0 +1,51 @@ +# stdfile +## 导入模块 +``` python +import "stdfile" +``` +## 简介 +- 库中包含了11种方法,能够实现对文件的读、写、存、取等操操作 +- 函数成功返回数值,失败返回 null +## 功能 + +|原型|返回值|功能| +|:-----:|:-----:|:-----:| +|open(self, f, m)|pointer|以 m 模式打开文件 f,并返回其文件指针| +|close(self, f_t)|number|关闭 f_t 指针对应的文件| +|putc(self, f_t, i)|number|向 f_t 中写入 i 字符| +|print(self, f_t, s)|number|向 f_t 中写入 s 字符串| +|gets(self, f_t, n)|string|从 f_t 所指向的输入流中读取 n-1 个字符(如果n为null,则读取为内核最大字符缓冲区),如果这个函数在读取最后一个字符之前就遇到一个换行符或文件的末尾 null,则只会返回读取到的字符,包括换行符| +|getc(self, f_t)|number|从 f_t 中读取一个字节,返回数字形式| +|input(self, f_t)|string|从 f_t 所指向文件中读取一个字段,遇到空格等结束arg_returnnum(vm,(Number)(ftell((FILE*)(arg_getptr(vm,1)))));| +|lineinput(self, f_t)|string|从 f_t 读取一行(本质是 file.fgets(f_t,null))| +|eof(self, f_t)|null/num|判断 f_t 是否到文件尾,否则返回 null| +|seek(self, f_t, i, sp)|number|设置流 f_t 的文件位置为给定的偏移 i,参数i 意味着从给定的 sp 位置查找的字节数| +|tell(self,f_t)|number|返回 f_t 当前位置,以文件头为相对位置| + +## 文件访问模式 +|文件访问模式字符串|含义|解释| +|:-----:|:-----:|:-----:| +|"r" | 读 | 打开文件以读取 | +|"w" | 写 | 创建文件以写入 | +|"a" | 后附 | 后附到文件 | +|"r+" | 读扩展 | 打开文件以读/写 | +|"w+" | 写扩展 | 创建文件以读/写 | +|"a+" | 后附扩展 | 打开文件以读/写 | + +## 样例 + +``` python +import "stdfile" + +f = file.open("11.txt","w") or error("文件打开失败") +file.print(f,"hello") +file.close(f) + +f1 = file.open("11.txt","r+") or error("文件打开失败") +print('读取文件中的一行:',file.lineinput(f1)) +file.close(f1) + +f2 = file.open("11.txt","a+") or error("文件打开失败") +print('从f2所指向的输入流中读取五个字符:',file.gets(f2,6)) +file.close(f2) +``` diff --git a/wiki/package/stdmath.md b/wiki/package/stdmath.md new file mode 100644 index 0000000000000000000000000000000000000000..5e474d014ad4ea704eaeb1972318a52f7c4b050d --- /dev/null +++ b/wiki/package/stdmath.md @@ -0,0 +1,54 @@ +# stdmath +## 导入模块 +``` python +import "stdmath" +``` +## 简介 +- 库中包含了常用数学常数的值 +- 同时包含了常用数学函数 +## 功能 + +|原型|返回值|功能| +|:-----:|:-----:|:-----:| +|PI()|number|返回π的值| +|E()|number|返回e的值| +|GAMMA()|number|返回γ(欧拉常数)的值| +|abs(num)|number|返回数的绝对值| +|mod(a,b)|number|返回a mod b的结果| +|acos(x)|number|返回以弧度表示的x的反余弦| +|asin(x)|number|返回以弧度表示的x的反正弦| +|atan(x)|number|使返回以弧度表示的x的反正切| +|cos(x)|number|返回x的余弦值| +|sin(x)|number|返回x的正弦值| +|tan(x)|number|返回x的正切值| +|exp(x)|number|返回e的x次幂的值| +|log(a,N)|number|返回以a为第N的对数| +|ln( N )|number|返回以e为底,N的对数| +|lg( N )|number|返回以10为底,N的对数| +|sqrt(num)|number|返回num的平方根| +|ceil(num)|number|对num向上取整| +|floor(num)|number|对num向下取整| +|round(num)|number|将小数四舍五入成整数| +|cut(num,x)|number|截取小数到若干位| + +## 样例 + +``` python +import "stdmath" + +print('-4的绝对值:',abs(-4)) + +print('pi的值:',PI()) + +print('GAMMA的反正切:',atan(GAMMA())) + +print('0的反正弦:',asin(0)) + +print('e的2次方:',exp(2)) + +a = 3.5 +print('对3.5进行四舍五入:',round(a)) + +print('以10为底10的对数:',lg(10)) + +``` \ No newline at end of file diff --git a/wiki/package/stdstring.md b/wiki/package/stdstring.md new file mode 100644 index 0000000000000000000000000000000000000000..52f3b83e165272b9ea26534c81da4e696b96955e --- /dev/null +++ b/wiki/package/stdstring.md @@ -0,0 +1,47 @@ +# stdstring +## 导入模块 +``` python +import "stdstring" +``` +## 简介 +- 字符串库能够获取字符串的相关信息,如字符串的长度和字符串的子串是否存在 +- 能够对字符串进行相应的修改,如倒置、大小写转换、子串截取 +## 功能 + +|原型|返回值|功能| +|:-----:|:-----:|:-----:| +|length(s)|number|返回 s 的长度| +|strstr(fs,ss)|string/null|返回在 fs 中 ss 出现为首的子字符串,无结果则返回空| +|strtok(fs,t)|string/null|以 t 为标志,在 fs 中分词,无词返回空| +|replace(fs,str,obj)|string|将 fs 中 的 str 替换成 obj| +|mid(s,sp,len)|string|在 s 中 sp 位置 截取 len 长度的字符串| +|reverse(s)|string|倒置 s| +|toupper(s)|string|大写 s| +|tolower(s)|string|小写 s| +|string(s,n)|string|将 n 个 fs 拼接为一个长字符串| +|coutnum(fs,ss)|number|统计 fs 中 ss 出现次数| + +## 样例 + +``` python +import "stdstring" + +string s="aaabbb" + +print('字符串s的长度:',length(s)) + +t=replace (s,"aaa","bbb") +print('替换后的字符串:',t) + +print('获取以b为首的字符串:',strstr(s,"b")) + +print('从4号位开始截取长度为3的字符串:',mid(s,4,3)) + +d=toupper(s) +print('将s全部大写后:',d) + +print('s中字母a的数量:',countnum(s,"a")) + +``` + + diff --git a/wiki/package/stdsys.md b/wiki/package/stdsys.md new file mode 100644 index 0000000000000000000000000000000000000000..95cfd294b326a98947725d9be250c610be97dff1 --- /dev/null +++ b/wiki/package/stdsys.md @@ -0,0 +1,31 @@ +# stdsys +## 导入模块 +``` python +import "stdsys" +``` +## 简介 +- sys库创建一个模式进程对象pobj +- pobj方法可以对进程进行读写及关闭操作,还能获取进程指针 +## 功能 + +|原型|返回值|功能| +|:-----:|:-----:|:-----:| +|sys.popen(self,cmd,mod)|unit|使用 cmd 命令创建一个 mod(r=读,w=写) 模式的进程对象 pobj +|sys.getenv(self,name)|string|获取环境变量 name| +|pobj.read(self,len)|string|读取 len 个字符,如果 len 为 null,则读取到换行符| +|pobj.write(self,s)|number|写入s| +|pobj.close()|number|关闭| +|pobj.pointer |ptr|进程指针| + +## 样例 + +``` python +import "stdsys" + +p1 = sys.popen("echo hello,world",'r') or error('进程创建失败') + +print('读取到换行符:',p1.read()) + +p1.close() + +``` \ No newline at end of file diff --git a/wiki/package/stdthread.md b/wiki/package/stdthread.md new file mode 100644 index 0000000000000000000000000000000000000000..9c35347df7eef6b855f82383f5670f83cf99dfd8 --- /dev/null +++ b/wiki/package/stdthread.md @@ -0,0 +1,40 @@ +# stdthread +## 导入模块 +``` python +import "stdthread" +``` +## 简介 +- 库中包含了5种不同的函数 +- 该库是对进程进行管理,能够实现创建、阻塞、分离、退出、终止线程的功能 +## 功能 + +|原型|返回值|功能| +|:-----:|:-----:|:-----:| +|thread.create(self,func,...)|ptr|创建以 func 为入口的线程,返回线程pid| +|thread.join(self,thread_t)|number|阻塞至 thread_t 线程结束| +|thread.detach(self,thread_t)|number|分离 thread_t 线程| +|thread.exit()|number|退出当前线程| +|thread.cancel(self,thread_t)|number|终止 thread_t 线程| + +## 样例 + +``` python +import "stdthread" + +def task(id): + for i = 1,5: + print("Task:"&id&',x'&i) + pass + pass + +t1,t2,t3 = thread.create(task,1),thread.create(task,2),thread.create(task,3) + +thread.join(t1) +thread.join(t2) +thread.join(t3) + +task('main') +print("ALL OVER") +``` + + diff --git a/wiki/package/stdtime.md b/wiki/package/stdtime.md new file mode 100644 index 0000000000000000000000000000000000000000..fc9d4df7d0e4a63f100eaeb7466405a356bbd682 --- /dev/null +++ b/wiki/package/stdtime.md @@ -0,0 +1,41 @@ +# stdtime +## 导入模块 +``` python +import "stdtime" +``` +## 简介 +- time库中包含了8种不同的函数 +- 能够获得当前的时间信息,包括年、月、日、星期、小时、分、秒 +- 拥有计时器函数,能够返回程序开始运行到当前的计时器时间 +## 功能 + +|原型|返回值|功能| +|:-----:|:-----:|:-----:| +|time.year()|number|返回年份| +|time.mon()|number|返回月| +|time.day()|number|返回日期| +|time.hour()|number|返回小时| +|time.min()|number|返回分钟| +|time.sec()|number|返回秒| +|time.date()|number|返回周几| +|time.clock()|number|返回计时器秒数| + +## 样例 + +``` python +import "stdtime" + +print('当前时间',time.year(),'年') + +print('当前时间',time.mon(),'月') + +print('当前时间',time.hour(),'小时') + +print('当前时间星期',time.date()) + +print('当前时间第',time.sec(),'秒') + +print('返回程序开始运行到当前的计时器时间',time.clock,'秒') +``` + + diff --git a/wiki/package/stdvm.md b/wiki/package/stdvm.md new file mode 100644 index 0000000000000000000000000000000000000000..1edd63907f005c7b37761c2112e808933f6fcd9d --- /dev/null +++ b/wiki/package/stdvm.md @@ -0,0 +1,36 @@ +# stdsvm +## 导入模块 +``` python +import "stdvm" +``` +## 简介 +- 能够从内核获取电脑的相关信息,如获取版本信息、版权信息、CPU信息等 +## 功能 + +|原型|返回值|功能| +|:-----:|:-----:|:-----:| +|version()|string|返回版本信息(从内核获取)| +|build()|string|获取构建信息(从内核获取)| +|copy()|string|获取版权信息(从内核获取)| +|os()|string|获取操作系统信息(从内核获取)| +|arch()|string|获取CPU信息(从内核获取)| +|setgc()|null|设置GC上限| +|getmem()|string|获取当前使用的内存值(虚拟机内部计数)| +|getgc()|string|获取GC上限| +|gc() |null|立即 gc(无视内存状态)| +## 样例 + +``` python +import "stdvm" + +print('版本信息:',vm.version()) + +print('构建信息:',vm.build()) + +print('版权信息:',vm.copy()) + +vm.gc() + +print('gc上限:',vm.getgc()) + +``` \ No newline at end of file