这是第四篇了,之所以隔了这么久才写,一方面是因为最近开始实习了,另一方面是因为设计语法真是要考虑很多东西. 于是我去读了这本书,里面实现了两种语言,一种跟js差不多语法,用ast解释执行:另一种语法类似java,编译成字节码执行. 于是ngscript就愉快的决定使用类似js语法.编译成字节码了. 这之间还看了一本<flex与bison>,主要看了看LALR(1)中冲突的处理和写文法要注意的事情. 现在的BNF已经写成这个样子了.可能还会不断的改.常用的控制结构和try…catch都有. //…
JS脚本语言的基础语法:输出语法  alert("警告!");  confirm("确定吗?");   prompt("请输入密码");为弱类型语言: 开始时要嵌入JS代码:<script type="text/javascript"></script>: 关于写程序是需注意的基本语法:1.所有的字符全都是英文半角的:2.大部分情况下每条语句结束后要加分号:3.每一块代码结束后加换行:4.程序前呼后应:…
Cocos2d-x 脚本语言Lua基本语法 前面一篇博客对Lua这门小巧的语言进行了简单的介绍.本篇博客来给大家略微讲一下Lua的语法.不会长篇累牍得把Lua的全部语法都讲一遍,这里通过下面几点来讲Lua语言的基础语法: 输出语句 变量定义及赋值 方法定义及调用 for迭代器的使用 --输出语句,"--"为Lua语言凝视 print("Hello Lua") --输出"Hello Lua" --定义变量.local为Lua的keyword,用来声…
正式开始介绍前先扯点没用的. 从小玩basic长大的小朋友大多有一个梦想,就是自己实现一个basic解释器. 不过这里我实现的不是basic,而是一个语法和功能类似javascript的东西. 暂且称之为ngscript 做这个的初衷是想试试不借助任何cc工具,只用java和一些语言的基础设施来实现一个脚本解释器. 不使用cc工具有以下原因 语法蛋疼 调试麻烦 不知其所以然 很多书上把常用的parsing方法介绍一通,然后就去折腾sablecc,yacc去了(貌似还有一本书是专门讲yacc和le…
最近的进度 ngscript测试代码 function c1(a, b, c, d) { this.a = 1; this.b = new array(); this.b[0] = 1; this.b[1] = 2; } c = new c1(); print(c.a); a = (function(a, b, c) { return a + b * c; })(1, 2, 3); print(a); if (1) { print("if_test"); } if (0) { prin…
ngscript的语法分析使用的是我自己的语法分析工具parseroid.与常用cc工具(yacc.bison.javacc.antlr.etc…)不同的是,parseroid生成的不是语法分析器的源程序,而是一个parser对象,直接可以用来执行parsing.也就是说,可以由BNF在执行阶段动态生成parser. 生成parser的action table运算量还是有点大,所以在新版的parseroid里面table改成了serializable的,可以缓存下来免去生成table的过程. 实…
正则表达式的理论基础可以参考装配脑袋的 这个 自己动手开发编译器(二)正则语言和正则表达式 这个 自己动手开发编译器(三)有穷自动机 还有这个 自己动手开发编译器(四)利用DFA转换表建立扫描器 如果学过编译原理的课程就更好了. 词法分析用到了我写的一个工具lexeroid. 下面说一些我写lexeroid时候遇到的问题. Unicode 在 装配脑袋 的 自己动手开发编译器(四)利用DFA转换表建立扫描器 中,提到了等价类处理Unicode的方法. 我做了一些改进. 首先我把DFA Edge的…
cpps 脚本是一个基于 C++ 的脚本语言. 基础语法: if&else 接口说明 根据括号中数据判断执行相关代码. 代码演示 var i = toint(io.getc()); if(i == 10) {     println("i 等于 10"); } else if(i > 10) {     println("i 大于 10"); } else {     println("i 小于 10"); } for 接口说明 循…
源码库: program-in-chinese/stone-editor-eclipse 参考: FAQ How do I write an editor for my own language? Deliver support for new languages in Eclipse IDE faster with Generic Editor and Language Servers - Red Hat Developer Blog Vogella公司写的源码例子: vogellacompa…
L脚本语言语法手冊 0.10版       简  介 L脚本语言是一个轻量级的,旨在接近自然语言的编程语言,眼下支持在中文.英文基础上的编程.并可扩展为随意语种.L脚本语言的语法结构简单.程序结构相对松散,易学易用. 眼下L脚本语言仍处于开发初期,功能尚不完好.眼下提供了一个简单的源代码编辑器,建议使用notepad++或者ultraedit进行源代码编辑. 文件夹 一. 二. 三. 四. 五. 六. 七. 八. 九. 十. 十一. 十二. 十三. 十四. 十五. 十六. 十七. 十八. 十九.…