实现自己的脚本语言ngscript之零】的更多相关文章

正式开始介绍前先扯点没用的. 从小玩basic长大的小朋友大多有一个梦想,就是自己实现一个basic解释器. 不过这里我实现的不是basic,而是一个语法和功能类似javascript的东西. 暂且称之为ngscript 做这个的初衷是想试试不借助任何cc工具,只用java和一些语言的基础设施来实现一个脚本解释器. 不使用cc工具有以下原因 语法蛋疼 调试麻烦 不知其所以然 很多书上把常用的parsing方法介绍一通,然后就去折腾sablecc,yacc去了(貌似还有一本书是专门讲yacc和le…
这是第四篇了,之所以隔了这么久才写,一方面是因为最近开始实习了,另一方面是因为设计语法真是要考虑很多东西. 于是我去读了这本书,里面实现了两种语言,一种跟js差不多语法,用ast解释执行:另一种语法类似java,编译成字节码执行. 于是ngscript就愉快的决定使用类似js语法.编译成字节码了. 这之间还看了一本<flex与bison>,主要看了看LALR(1)中冲突的处理和写文法要注意的事情. 现在的BNF已经写成这个样子了.可能还会不断的改.常用的控制结构和try…catch都有. //…
最近的进度 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的…
转自:http://man.chinaunix.net/newsoft/vi/doc/usr_41.html#usr_41.txt Vim 脚本语言在很多地方用到,包括 vimrc 文件, 语法文件, 等等.本章讨论 Vim 脚本 相关的知识.这样的内容有很多,所以本章也比较长. |41.1| 简介 |41.2| 变量 |41.3| 表达式 |41.4| 条件语句 |41.5| 执行一个表达式 |41.6| 使用函数 |41.7| 定义一个函数 |41.8| 异常 |41.9| 其它讨论 |41…
InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      1.变量      BOOL 布尔型 值为TRUE(1)或FALSE(0)      CHAR 字符型 一字节长的(8bit)的字符      HWND 窗口句柄 用来存放窗口句柄      INT 整型 两字节长的整数      LIST 列表型 指向InstallShield列表,用ListCr…
javascript,Javascript是一种浏览器端的脚本语言,用来在网页客户端处理与用户的交互,以及实现页面特效.比如提交表单前先验证数据合法性,减少服务器错误和压力.根据客户操作,给出一些提升,让用户体验更好等.也可以实现一些页面动画. 有两种,一种是嵌在网页里的.一种是引用的. 先看看嵌在网页中的.比较易懂. 一.嵌网页的脚本格式脚本可以写在任何位置,但一般来说都写在网页最底部,因为网页运行需要一个顺序.如果写在上面需要再写一段代码. <script type="text/jav…
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本.缩短开发时间,快速适应市场变化的目的. AgileEAS.NET SOA中间件平台提供了敏捷快速开发软件工程的最佳实践,通过提供大量的基础支撑功能如IOC.ORM.SOA.分布式体系及敏捷并发开发方法所支撑的插件开发体系,以及提供了大量的实体.数据模型设计生…
Script.NET是一种动态的脚本语言,它使得程序可扩展,可定制,和维护性好.和Office系列的VB Script相似,可以在应用中嵌入大量的代码块,以便在运行时才执行这些代码. Script.NET的设计理念是:简单(simplicity),有效率(efficiency),容易上手(intuitive).先通过例子,来做一个基本的了解. using System; using System.Diagnostics; using System.IO; using ScriptNET; usi…
互联网服务有很多台服务,但是在上线的时候需要将这些服务版本都更新与个个都重启,下面的脚本语言,就是一键发布服务~ 1.在/home/weihu/deploy/ 目录下建下publish .publish下建下bak.bin.cfg.rel文件夹(其中bak为备份.bin为自己写的脚本语言目录.cfg为生产环境的配置文件.rel每次版本发布) 2.安装expect脚本 查看是否已经安装 whereis expect 3.工程版本中,生产配置文件往往是很少变的,但是自己打的版本可能是在开发环境可能和…
C#Light的定位是嵌入式脚本语言,一段C#Light脚本是一个函数 C#Evil定位为书写项目的脚本语言,多脚本文件合作,可以完全用脚本承载项目. C#Light/Evil 使用完全C#一致性语法 目前 C#Light已经是正式版,且经商业项目检验 C#Evil是Alpha版,欢迎试用反馈. C#Evil在C#Light的基础上 从底层支持了面向对象,请注意下面是脚本代码 不同于C#Light没有函数和类的设计,(C#Light只是用C#LightFramework来模拟整个cs文件的识别,…
核心内容概述 1.JavaScript加强,涉及到ECMAScript语法.BOM对象.DOM对象以及事件. 2.Ajax传统编程. 3.jQuery框架,九种选择器为核心学习内容 4.JQuery UI插件 5.jQuery Ajax编程 6.jQuery第三方插件 7.反向Ajax编程(彗星) 一.JavaScript基础加强 JavaScript是在浏览器内容运行,无需编译.解释执行动态脚本语言,是一种弱类型语言,所有变量使用var定义. JavaScript的3个组成部分分别为:核心(E…
Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针   1.1. java方法引用(Method References) 与c#委托与脚本语言js的函数指针这几个概念是类似的,1 1.2. java方法引用(Method References) 方法引用分为4类1 1.3. 范例3   1.1. java方法引用(Method References) 与c#委托与脚本语言js的函数指针这几个概念是类似的, C#委托本质是函书接口,js是duc…
js的脚本语言全程javascript在网页里面使用的脚本语言:分类:1.嵌入网页里面2.在外部脚本标签可以写在网页的任何地方,但一般都写在网页的底部:<script type="text/javascript"></script>代表这是一个脚本:二.注释语法样式表的注释:单行注释用//表示:多行注释/**/可以注释多行文字:<!---->是在网页里面的注释:三.数据类型的分类:1.整型(存放整数的数据)用int来表示整型:2.flioat(单精度…
JS脚本语言 JS脚本语言全称JavaScript,是网页里面使用的脚本语言,也是一门非常强大的语言. 一.基础语法 1.注释语法 单行注释:// 多行注释:/**/ 2.输出语法 ①alert(信息);效果是弹出信息 ②confirm(信息);效果是弹出一个和用户交互的对话框 ③prompt(信息):效果是弹出一个可以让用户输入的对话框 3.嵌入JS代码 嵌入JS代码时,要尽量靠下写,嵌入代码为<script type="text/javascript"></scr…
背景 我们知道Unity3d是通过C#脚本语言的形式来实现游戏的逻辑代码编写,同样SCOTT服务器也设置了通过C#脚本来实现游戏逻辑,但是本文并不是想真正分析解密他们的运行机制,只是想通过自己的一个需求,来探讨总结下其中的原理. 下面来说下我自己的需求,比较简单,由于经常在非开发环境部署一些小工具,做系统维护,但每次又懒得带笔记本和编译环境到现场,但系统数据又总是那么奇葩,时常有bug出现,突发奇想是否是能把工具做成脚本,这样现场就很容易进行调整(简单修改脚本),现场搞定不用来回折腾,岂不是很H…
JSON:JavaScript 对象表示法(JavaScript Object Notation) 和xml相似,都是文本形式(保存在文本文件中或字符串等形式),比如: jsstr = {"系别":"历史系","班级":"一班", "学员":[ {"姓名":"张三","年龄":25,"性别":"男"}, {&…
最爱的脚本语言之一.…
newLISP 10.5.3 修复了一些 bug ,为 KMEANS 集群分析器增加了一些函数. newLISP是一个类似Lisp语言的.用于一般用途的脚本语言.它具有 LISP 语言所有的魔力,但更容易学习和使用. newLISP是友好的,快速和简小的.大部分您需要的功能都将已经内置. 下面是一段示例代码: (command-event (fn (s) (local (request) (if (find "?" s) ; is this a query (begin (set 'r…
paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模块的建立而且使用.. 2 1. ##--调用 (载入文件模块---普通文件模块 3 2. ) 3 3. ##---载入内置模块 3 4. ##----三.载入文件目录模块 3 5. ##--四.载入node_modules里的模块 4 ----第三方模块的下载跟安装 4 #---------调用my…
1.JPDL表达式 2.动作:数据库操作例子 3.路由:transaction一个流程之间的指向 4.BeanShell脚本语言 例子: 发布到数据库中才能做一个测试类…
样式 剩余样式: 1.<div style=display:"none"></div>:nono 是隐藏该元素内容,block是显示该元素内容 2.<div style=display:"visibility-visible/hidden"></div>:visible是显示该内容,hidden是隐藏该内容 两者区别:如果display选none的话,元素彻底消失,位置也消失:如果visibility-hidden的话…
导读: JavaScript代码嵌入HTML文档 JavaScript代码运行方式 第一个实例 JavaScript的三种对话框 定义JavaScript变量 JavaScript运算符和操作符 JavaScript是一种属于网页脚本语言,已经被广泛用于Web应用开发.可以使用JS添加.删除.修改网页上的所有元素及属性:在HTML网页中动态写入文本.数字和插入图表:响应网页中的事件,并做出相应处理.了解JS编程后,可以轻松调用各类网络统计学库函数和在网页上统计数据处理或分析. JavaScrip…
js脚本语言:  循环:(循环操作某一个功能(执行某段代码)) 四要素: 循环初始值  循环条件  状态改变  循环体 for(穷举  迭代) while 举例:(穷举) 与7相关的数 <script type="text/javascript"> var  s=""; for(var i=0;i<100:i++) {  if(i%7==0||i%10==7||pareint(i%10==7) { s=s+i+"|" } }  …
样式其他:display(显示block和隐藏none,不占位置)  visibility(显示visible和隐藏hidden,占位置)  overflow(超出范围 hidden隐藏) 透明(opacity:0.5;-moz-opacity:0.5;filter:alpha(opacity=50)) 圆角(border-radius:5px;) 阴影(box-shadow:0 0 5px white;) JS脚本语言:  全称JavaScript:  网页里面使用的脚本语言     非常强大…
javascript(脚本语言)一.注释语法:1.单行注释 //注释内容2.多行注释 /*注释内容*/二.输出语法js语言格式,尽量靠下写,属双标签<script type=”text/javascript”>中间需要写的内容</script>⦁ alert(“……”),显示信息对话框,括号里是要弹出的信息,例如,alert(“hello”),输出hello.⦁ confirm(“……”),交互对话框,用户可以点击确定或者取消,括号里是要弹出的信息.经常用在需要用户确定的地方.⦁…
大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言. 编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”. 运行程序时,直接读取目标代码(object code).由于编译后的目标代码(object code)非常接近计算机底层,因此执行效率很高,这是编译型语言的优点. 但是,由于编译型语言多半运…
ANTLR 是一个 Java 实现的词法/语法分析生成程序,目前最新版本为 4.5.2,支持 Java,C#,JavaScript 等语言,这里我们用 ANTLR 4.5.2 来实现一个自己的脚本语言. 因为某些未知原因,ANTLR 官方的文档似乎有些地方和 4.5.2 版的实际情况不太吻合,所以,有些部分,我们必须多方查找和自己实践得到,所幸 ANTLR 的文档比较丰富,其在 Github 上例子程序也很多,足够我们探索的了. 如果你没有编译原理的基础,只要写过正则表达式,应该也能很快理解其规…
2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马).跟 Tiger(Java SE 5)相比,Mustang 在性能方面有了不错的提升.与 Tiger 在 API 库方面的大幅度加强相比,虽然 Mustang 在 API 库方面的新特性显得不太多,但是也提供了许多实用和方便的功能:在脚本,WebService,XML,编译器 API,数据库,JMX,网络 和 Instrumentation 方面都有不…