开发者指南

上传人:cl****1 文档编号:463960073 上传时间:2023-07-21 格式:DOCX 页数:14 大小:71.68KB
返回 下载 相关 举报
开发者指南_第1页
第1页 / 共14页
开发者指南_第2页
第2页 / 共14页
开发者指南_第3页
第3页 / 共14页
开发者指南_第4页
第4页 / 共14页
开发者指南_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《开发者指南》由会员分享,可在线阅读,更多相关《开发者指南(14页珍藏版)》请在金锄头文库上搜索。

1、OrcK 语言开发详解开发者指南1构建工作环境 并 编译执行2v1.2 版本3v1.3 版本4如何编写“成语”4$ 代表换行符 5讨好程序员?6是否要取消 effects 文件格式? 6orck,orckd,orcke 三个程序 6什么是作用编程?6什么是动态编程?7ef文件解析v1.2及之前7不要写错扩展名8注意等号8关于 (.+),stdout)8在模式中使用$符 9为什么这么多反斜线? 9分组但是不捕获9以分号(叹号,$)开头的行才是我们要处理的行。 9为什么用 $ 开头 10六种语言版本的 hello world 10为什么叫做“正则注入” 10(hello worId)还是(hell

2、o world,stdout)? 10(somethi ng)是一个过强的模式11作用对顺序敏感1 1新加入的 OSP 文件格式 1 1新加入了$0 12语境也能用捕获变量(V1.2) 12特殊变量(V1.2) 12-e和-t和-d选项13get_filename 函数 13扩展名? 13$include 中的死循环14临时文件14开发者指南欢迎使用 OrcK 语言。首先是Perl环境,作者用的是5.8版的。并且用相应版本的perI2exe对orck.pl进 行了封装,如果不进行内核开发,就没必要安装Perl环境。你可能已经有C+ +了,如果没 有,我推荐Dev-CPP,小巧。在命令行输入or

3、ck yourprogram.orck”就OK 了。然后用 C+编译执行生成的cpp和h文件,有点麻烦。1.0.8版本之后可以一键编译,不过由于 perl2exe 的问题,有大段的广告弹出来,还是很烦人。如果要避开广告,就要下载并安装 15.8MB的Perl环境,为了让OrcK语言的安装包尽可能小(这样便于传播),我选择了保 留广告,有广告的 orck.exe 才 400 多 KB。1.3版本中,由于有一个借用正则表达式的例子,所以必须把Perl环境打包,导致安 装包膨胀到20多MB。1 . 2版本和1 . 3版本很大程度上是平行的,建议都看一看。OrcK 语言的开发分为内核、外壳、应用开发三

4、部分,分别对应于 pl、effects、orck 文件的开发。从事内核开发,你需要懂 Perl 语言,最好还包括编译原理;从事外壳开发, 你要懂C+ +,以及Perl风格的正则表达式;从事应用开发,你也要具备C+知识,并且 对effects文件中的函数有所了解。Orck语言不仅仅for C+ +,也可以for Java等。构建工作环境 并 编译执行安装Perl和Dev-cpp,由于OrcK.ini中默认C+编译器在d盘,所以把Dev-cpp 安装到d:Program FilesDev-Cpp这样可以免去修改ini文件的麻烦。我把Perl语言 安装到 D:Program FilesPerl。安装

5、 UltraEdit,把 wordfile.txt 中/L1C/C+那一行最后的 File Extensions = C CPP CC CXX H HPP AWK ORC其中添加一个ORCK,然后按照设置文件关联.PNG设 置,以后就可以双击*.orck文件打开并用C+ +的语法加亮显示了。按照设置环境变量.PNG进行设置,修改PATH环境变量,使得以后可以在命令行使 用orck.pl *.orck -t进行编译执行。用UltraEdit做IDE似乎还有点问题,结果无法显示。我选择了老办法,启动命令行, 看着那个我熟悉的黑白文本界面进行调试。在 UltraEdit 中修改保存文件,在命令行用

6、orck.pl test.orck 编译执行,遇到问题时就去文件夹下找到相应的文件,看看出了什么 bug。使用命令行时还有一个小技巧:为了快速定位到文件所在的目录,启动命令行,输入 cd+空格,用鼠标拖动文件到黑色的命令行窗口,文件的全路径会添加到命令行,然后按退 格键删除文件名,按回车就能定位到所需的目录。输入orck.pl+空格+t,按TAB键,能自动补全文件名为test.orck,再按回车就能启 动编译。按上下箭头可以选择上一个或下一个命令,调试时一般是先修改源文件,保存,用 Alt+Tab键切换到命令行窗口,按向上箭头,显示刚才那个编译指令,按回车再次执行。输入 cls 清空文本界面。

7、地址后退搜索 文件夹二D:l我的文档OrcK forC+ 1.3examples显示变量玄件和玄件夹任务cj创建一平新文件夹 込将这平文件夹发布到 p Web5共享此文件夹其它位置ex :aillpl e EQ我的文档笛共辜文档tmwt_. CppC+ Suifce file1 KB.匚ppCFF_ 文 1 KB刃目转到t已吕t. Drc:kORCK文件1 KBtmwt_. exe*显示变量文件()編辑(I)查看(V)收藏(A)工具(T)帮助QI)上图中,test.orck是源文件,test.exe是最终生成的程序。其他都是临时文件,添加-t 选项可以删除临时文件。v1.2 版本v1.2 版本

8、中包含4 个文件夹。首先介绍bin目录中的文件。Pl文件是源代码,在有Perl的电脑上可以直接运行。Exe 是相应的可执行文件,为了在没有Perl的电脑上使用。Orckd.exe和orckd.pl:处理文件 中的% %,让源代码体现出动态编程的特性。Orcke.exe和orcke.pl:处理文件中的 $ ! ? effect,体现出作用编程的特性。Or ck.exe和or ck.pl :综合调用or ckd和or eke。然后是example目录,这里有许多例子,16是作用编程的例子,orckd是作用编 程的例子,orckcgi和orckd perl C+是两个尝试,我没有花太多时间去开发它们

9、。OrcK 是个综合的例子,包含了作用编程和动态编程,建议作为最后一个例子来看。Include目录需要注意,它用于$include file命令,是系统目录,它位于orck.exe 文件的上一级中的include文件夹中,所以一般是从命令行调用bin目录中的exe和pl文 件时它才发挥作用。Doc 目录,里边是文档,没什么好说的。我在examples中一般都放了一个exe文件和OrcK.ini文件,这不是必须的,只是为 了方便大家启动编译程序才这么做的,拖动源代码(一般是ok od oe做扩展名的文件)到 exe文件上就可以了。放OrcK.ini的原因是它必须位于exe文件的同一个目录下。最后

10、说一说编译选项,有-e和-t两个可选。默认情况是编译执行且不删除临时文件。 加-e表示不编译执行、加-t表示删除临时文件、同时使用时写作-et或-te。由于第一个参 数用来传递文件名,所以编译选项放在第二参数的位置,如: orckd.exe test.od -eOrckd和orcke被设计成对扩展名不敏感,这是为了方便调用,例如把test.orck改 成test.xxx再调用,也能生成test.exe。需要注意的是,不要把源文件的扩展名写作cpp, 因为生成的文件是cpp文件,会覆盖掉你的劳动成果。v1.3 版本v1.3 版本向着世界语的方向进行探索。它尝试多种语言混合编程。“正则表达式”就是

11、这样一个例子,p被解释成一个函数,在这个函数里边“桥 接”到Perl语言,借用Perl语言的正则表达式对字符串进行处理。(使用时要修改当前目 录,否则找不到 Perl 脚本。)hello wo rld程序是一个简单的例子,通过它可以了解Or cK语言的工作原理,实际编 程中没有必要这么做。o”中可以看做是一个成语,是浓缩了的C语言。在effect中定义的成语被翻译成 相应的句子,无法解释的成语按其原样输出。有了 o的模式,可以在一行使用多个成 语,如X o”A Y oB Z然而在1.2版本之前,由于用$开头,每行只能使用一个模式。显示变量的例子,它把变量的名字和值一起打印出来,可以用来测试。免

12、去了输入变量 名两次的麻烦,当变量名比较长的时候,这种便利尤为明显。由于有动态编程,所以打印时有点费事,如 printf(“”);orck.pl 会 先解释,后解释双引号,导致什么都不显示。乘方的例子中,两次使用了 effect。第一次是oprint:,第二次是oa*b,两个可 以写在一起,结果为oprint:a*b;。由于在C+ +中不能使用*操作符,在OrcK语言 中却可以,这应该算是一个小的进步。变量名重载的例子中,通过判断变量名是否以s结尾,生成不同的程序。传统的重载 是通过判断变量的类型,而这里是变量名。如何编写“成语”o.中的内容被称为“成语”,是浓缩了的C+语句。例如oprint

13、:(.+)中的内容被替换成:std:cout$1=(o$1)std:endl写在一行中就是:effect oprint:(.+)std:cout$1=(o$1),因为C+语句里不会有这个符号,所 以这里选择了它。之后的内容,直到本行结束,都是C+语句。了解早期版本的读者一定对$1,$2不陌生,他们是替换变量,用来替换v?前面的正 则表达式捕获的字符串。上面第五行的例子中,正则表达式中只有一个(+),所以后 边只有$1, $1 可以出现多次,它们会被替换成相同的内容。但是不能有$2,因为只有一 个替换变量,所以只有$1, $2会被原封不动地输出,就是”$2”,不是别的。后边的C+语句一般不以分号

14、结尾,因为使用o.时要像其他C+语句一样 带一个分号,所以这里就没必要加一个分号。有时加个分号也可以,那就成了”;”的形式, 对应的C+语句也能通过编译。不过如果o”.被放在了 if(.)或while(.)中,这个分号 就是多余的,必须去掉。到那时再去修改effect就为时太晚了,所以这里一般不加分号。1.3 版本的一个进步是加入了“递归”替换。上面第五行的例子中, 右边出现了 o$1,$1被替换后,这就是又一个成语,它会被再次替换,可能就是现在这个effect, 也可能是其他effect。在这个例子中应该是其他的effect,否则cout中还有另一个cout, 肯定通不过C+ +的编译。C+ +的编译比OrcK的编译复杂许多,也慢许多,读者运行例子 时,一般要等上一两秒,这主要是C+编译器在工作,这是题外话啦。1.3版本的递归替换遵循最左、最上原则,即先替换左边的o.,如果前边有一个 effect可以替换就用它替换,不去考虑有没有其他的effect可用。因为有这个限制,所以 类似于文法中的A B|C就不成立,这里有个“或”,1.3版本的替换会直接把A替换成B, 而从不去考虑 C 的存在。递归是个强大的工具,但也需要仔细的设计和测试。暂定每个成语可以替

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号