这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 comterp,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
comterp - 分布式命令解释器演示器
概要
康普
康普 远程
康普 服务器“端口号”
康普 记录器“portnum”
康普 客户端“主机”“端口号”[“文件”]
康普 telcat“主机”“端口号”[“文件”]
康普 运行“文件”
康普 “表达式”
商品描述
comterp 演示了包含在 ivtools 中的命令解释器。 一个用户(或客户
程序)可以通过 stdin 和 stdout 或 telnet(当 ACE 内置时)与 comterp 交互。
命令语法是以分号分隔的命令列表,其中包含任意数量的命令
括号中的参数,支持可选参数和关键字
参数,即:
命令2(arg1 arg2 arg3 :key1 val1 :key2 val2);
命令1(arg1 arg2 arg3 :key1 val1 :key2 val2)
类似 C 的二进制表达式可以嵌入到命令语言的任何位置,使用
下表中的运算符。 可以通过赋值动态创建变量
运算符(即“ball=1”创建一个设置为 1 的整数“ball”变量)。 未终止
表达式会导致自动命令行扩展(直到解析器确定
表达完成)。 "()、"{}" 和 "[]" 都可以互换使用。
指挥 配置
康普
调用单个命令解释器以通过 stdin 和 stdout 进行交互。
远程计算机
调用一个命令解释器,就像默认的一样,并包括一个远程命令
在服务器模式下访问其他comterp。
comterp 服务器“portnum”
侦听并接受端口号上的连接,然后设置命令解释器等待
用于并处理来自该连接的命令。
comterp 记录器“portnum”
侦听并接受端口号上的连接,然后简单地转发传入的消息
到标准输出,同时使用换行符返回。 出于调试目的,并不是真正的使用
口译员。
comterp 客户端“主机”“端口号”[“文件”]
连接到主机上的端口号并发送/接收以换行符结尾的文本缓冲区。 为了
调试目的,并不是真正使用解释器。
comterp telcat“主机”“端口号”[“文件”]
连接到主机上的端口号,对文件进行分类,然后关闭连接。 不是真的有用
口译员。
运行“文件”
运行文件内容然后退出。
comterp "expr"
评估单个表达式然后退出。
操作员 表
操作员命令名称优先顺序类型
------------------------------------------
. dot 130 R-to-L 二进制
` bquote 125 R-to-L 一元前缀
! 否定 110 R-to-L 一元前缀
~ bit_not 110 R-to-L 一元前缀
++ incr 110 R-to-L 一元前缀
++ incr_after 110 R-to-L 一元后缀
- 减去 110 R-to-L 一元前缀
-- decr 110 R-to-L 一元前缀
-- decr_after 110 R-to-L 一元后缀
** 重复 90 个 L 到 R 二进制
.. 迭代 80 个 L 到 R 二进制文件
% mod 70 L 到 R 二进制
* mpy 70 L 到 R 二进制
/ div 70 L 到 R 二进制
+ 添加 60 个 L 到 R 二进制文件
- sub 60 L-to-R 二进制
<< lshift 55 L-to-R 二进制
>> rshift 55 L 到 R 二进制
< lt 50 L 到 R 二进制
<= lt_or_eq 50 L 到 R 二进制
> gt 50 L 到 R 二进制
>= gt_or_eq 50 L 到 R 二进制
!= not_eq 45 L 到 R 二进制
== eq 45 L-to-R 二进制
& bit_and 44 L-to-R 二进制
^ bit_xor 43 L-to-R 二进制
| bit_or 42 L 到 R 二进制
&& 和 41 L-to-R 二进制
|| 或 40 个 L 到 R 二进制
, 元组 35 L 到 R 二进制
,, stream concat 33 L-to-R 二进制
$ stream 32 R-to-L 一元前缀
$$ list 32 R-to-L 一元前缀
%= mod_assign 30 R-to-L 二进制
*= mpy_assign 30 R-to-L 二进制
+= add_assign 30 R-to-L 二进制
-= sub_assign 30 R-to-L 二进制
/= div_assign 30 R-to-L 二进制
= 分配 30 个 R 到 L 二进制
; seq 10 L 到 R 二进制
数学 命令:
n=min(ab) -- 返回 a 和 b 的最小值
n=max(ab) -- 返回 a 和 b 的最大值
n=abs(a) -- 返回a的绝对值
dbl=exp(x) -- 返回值 e 的 x 次幂
dbl=log(x) -- 返回 x 的自然对数
dbl=log10(x) -- 返回 x 的以 10 为底的对数
dbl=log2(x) -- 返回 x 的以 2 为底的对数
dbl=pow(xy) -- 返回 x 的 y 次幂值
dbl=acos(x) -- 以弧度为单位返回 x 的反余弦值
dbl=asin(x) -- 以弧度为单位返回 x 的反正弦
dbl=atan(x) -- 以弧度为单位返回 x 的反正切值
dbl=atan2(yx) -- 返回 y 在 x 上的反正切
dbl=cos(x) -- 返回 x 弧度的余弦
dbl=sin(x) -- 返回 x 弧度的正弦值
dbl=tan(x) -- 返回 x 弧度的切线
dbl=sqrt(x) -- 返回 x 的平方根
dbl=pi() -- 返回 pi 的值
dbl=radtodeg(dbl) -- 将弧度转换为度数
dbl=degtorad(dbl) -- 将度数转换为弧度
num=floor(num) -- 返回小于或等于参数的最接近的整数值
num=ceil(num) -- 返回最接近的大于或等于参数的整数值
num=round(num) -- 返回最接近的整数值
仿射 变换 AND MATRIX 命令:
point=xform(x,y a00,a01,a10,a11,a20,a21) -- x,y 坐标的仿射变换
affine=invert(a00,a01,a10,a11,a20,a21) -- 逆仿射变换
矩阵=摆姿势(matrix) -- 转置任意矩阵
matrix=matrix*matrix -- 矩阵乘法
统计/随机 命令:
sum(val1[,val2[,...,valn]]) -- 返回值的总和
mean(val1[,val2[,...,valn]]) -- 返回值的平均值
var(val1[,val2[,...,valn]]) -- 返回值的方差
stddev(val1[,val2[,...,valn]]) -- 返回值的标准偏差
rand([minval,maxval]) -- 返回 0 到 1 或 minval,maxval 之间的随机数
srand(seedval) -- 种子随机数生成器
清单 命令:
lst=list([olst|strm|val] :strmlst :attr :size n) -- 创建列表、复制列表或转换
流
val=at(list|attrlist|str n :set val :ins val) -- 返回(或设置或插入后)第 n 项
在列表或字符串中
num=size(list|attrlist|str) -- 返回列表(或字符串)的大小
val=index(list|str val|char|str :last :all :substr) -- 返回值的索引(或 char 或
字符串)在列表(或字符串)中,如果未找到则为零。
流 命令:
val=next(stream) -- 从流中返回下一个值
strm=stream(ostrm|list|attrlist|val) -- 复制流或转换列表
cnt=each(strm) -- 遍历流返回其长度
comp=filter(comps classid) -- 过滤 comps 流以匹配 classid
控制 指令 (使用 发表 评估):
val=cond(testexpr trueexpr falseexpr) -- 评估 testexpr,如果为真,评估和
返回 trueexpr,否则求值并返回 falseexpr
val=if(testexpr :then expr :else expr) -- 评估 testexpr 并执行 :then
表达式为真,:else 表达式为假。
val=for(initexpr whileexpr [nextexpr [bodyexpr]] :body expr) -- for 循环
val=while([testexpr [bodyexpr]] :nilchk :until :body expr ) -- while 循环
val=switch(val key-body-pairs) -- switch 语句(:casen 表示位置,:case_n 表示否定,
否则:符号)
continue -- 跳到 for 或 while 循环的下一次迭代
break([retval]) -- 跳出 for 或 while 循环
其他 指令
help(cmdname [cmdname ...] :all :posteval) -- 命令帮助
val=trace([flag] :get) -- 切换或设置跟踪模式
pause([msgstr]) -- 暂停脚本执行直到 C/R
step() -- 切换逐步脚本执行
fileobj|pipeobj=open([filename [modestr]] :pipe :in :out :err) -- 打开文件命令
close(fileobj|pipeobj) -- 关闭文件命令
[str]=print([fmtstr] [val [val1 [... valn]]] :string|:str :out :err :文件 fileobj|pipeobj
:prefix str) -- 用可选的格式字符串打印值
str=gets(fileobj|pipeobj) -- 从文件中获取一个换行终止的字符串
val=global(symbol)|global(symbol)=val|global(symbol :clear)|global(:cnt) -- 生成符号
全球化
int|lst=symid(symbol [symbol ...] | :max) -- 返回与关联的整数 id(s)
符号
sym|lst=symbol(symid [symid ...]) -- 返回与整数 id 关联的符号
val|lst=symval(symbol [symbol ...]) -- 返回与符号关联的值
变量
sym|lst=symadd(sym|str [sym|str ...]) -- 创建符号并返回而不查找。
sym=symvar(sym) -- 按原样返回符号
str=symstr(sym) -- 返回符号的字符串版本
n=strref(str|symid) -- 返回字符串引用计数
lst=split(symbol|string :tokstr [delim] :tokval [delim] :keep :reverse) -- 拆分符号
或字符串到字符(或标记)列表中。
str=join(clist :sym) -- 将字符列表加入字符串
str=substr(str n|str :after :nonil) -- 从字符串中提取字符(:nonil 返回
字符串(如果不匹配)
bool=eq(str1 str2 :n len) -- 部分字符串比较
bool=eq(sym1 sym2 :sym) -- 符号比较
postfix(arg1 [arg2 [arg3 ... [argn]]]) -- 回显未计算的后缀参数(带有
[narg|nkey] 定义命令之后,{narg|nkey} 未定义命令之后,(narg) 之后
键和一个 * 后评估命令)
parse(fileobj) -- 从文件中解析单个表达式
arr=posteval(arg1 [arg2 [arg3 ... [argn]]]) -- 后评估每个固定参数(直到
nil) 并返回数组
sym=attrname(attribute) -- 返回点对的名称字段
val=attrval(attribute) -- 点对的返回值字段
dotlst=dot(name) -- 构造空的点对列表
quit() -- 退出解释器
exit() -- 退出整个应用程序
empty() -- 空语句
val=run(filename :str :popen) -- 从文件(或字符串)运行命令
val=remote(hoststr portnum cmdstr :nowait) -- 然后远程评估命令字符串
本地评估结果字符串
val=eval(cmdstr|funcobj [cmdstr|funcobj ...] :symret ) -- 将字符串(或 funcobj)评估为
命令,可选择返回符号而不是 nil
funcobj=func(body :echo) -- 将命令体封装成一个可执行对象
val=shell(cmdstr) -- 在 shell 中评估命令
使用睡眠(msec) -- 睡眠微秒
mute([flag]) -- 设置或切换静音标志
nil([...]) -- 接受任何参数并返回 nil
c=char(num :u) -- 将任何数字转换为字符
s=short(num :u) -- 将任何数字转换为short
i=int(num :u) -- 将任何数字转换为 int
l=long(num :u) -- 将任何数字转换为 long
f=float(num) -- 将任何数字转换为浮点数
d=double(num) -- 将任何数字转换为双精度
sym|lst=type(val [val ...]) -- 返回值的类型符号
sym|lst=class(val [val ...]) -- 返回对象类型值的类符号
int=ctoi(char) -- 将字符转换为整数
flag=isspace(char) -- 如果字符是空格,则返回真
flag=isdigit(char) -- 如果字符是数字则返回真
flag=isspace(char) -- 如果字符是字母则返回真
str=arg(n) -- 返回命令行参数
n=narg(n) -- 返回命令行参数的数量
num=nand(ab) -- 按位与非(否定与)
num=nor(ab) -- 按位 NOR(否定或)
num=xnor(ab) -- 按位异或(否定异或)
仅 IN 服务器 MODE
str=timeexpr(comstr :sec n) -- 每隔一段时间执行的命令字符串
使用 onworks.net 服务在线使用 COMTERP