ngscript的语法分析使用的是我自己的语法分析工具parseroid.与常用cc工具(yacc.bison.javacc.antlr.etc…)不同的是,parseroid生成的不是语法分析器的源程序,而是一个parser对象,直接可以用来执行parsing.也就是说,可以由BNF在执行阶段动态生成parser. 生成parser的action table运算量还是有点大,所以在新版的parseroid里面table改成了serializable的,可以缓存下来免去生成table的过程. 实…
正式开始介绍前先扯点没用的. 从小玩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都有. //…
导读: JavaScript条件语句 JavaScript循环语句 JavaScript网页中错误捕获 JavaScript的Break和Continue命令 JavaScript的转义字符 1.JavaScript条件语句[返回] 在JavaScript中,可以使用下面4种条件语句: if 语句:在一个指定的条件成立时执行代码: if...else 语句:在指定的条件成立时执行代码,当条件不成立时执行另外的代码: if...else if....else 语句:使用这个语句可以选择执行若干块代…
最近的进度 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…
正则表达式的理论基础可以参考装配脑袋的 这个 自己动手开发编译器(二)正则语言和正则表达式 这个 自己动手开发编译器(三)有穷自动机 还有这个 自己动手开发编译器(四)利用DFA转换表建立扫描器 如果学过编译原理的课程就更好了. 词法分析用到了我写的一个工具lexeroid. 下面说一些我写lexeroid时候遇到的问题. Unicode 在 装配脑袋 的 自己动手开发编译器(四)利用DFA转换表建立扫描器 中,提到了等价类处理Unicode的方法. 我做了一些改进. 首先我把DFA Edge的…
这篇将讲述怎么使用python来遍历本地文件系统,并把文件按文件大小从小到大排序的一个小例子 在这个例子中,主要会用到python内置的和OS模块的几个函数: os.walk() : 该方法用来遍历指定的文件目录,返回一个三元tuple(dirpath, dirnames, filenames) ,其中dirpath为当前目录路径,dirnames为当前路径下的文件夹,filenames为当前路径下的文件 os.path.join() :可以用来连接目录和文件名,这样就可以得到某个文件的全路径了…
本篇,来谈谈类型系统,以及部分与垃圾收集器相关的内容. 一.基本类型 Xmas的基本类型:Null.Boolean.Label.String.Ref.Function.Integer.Float.Decimal.Array.List.Set.Map.Object:14个,相对于其他的脚本语言是有些多的:但,这些类型都是"原子的",少了其中一种,多少会有些不方便(但并非不完备,如Decimal可以代替所有算数类型:Map则可以可以替代所有容器类型).如果,你看过上一篇,会发现有那么一点点…
javascript 是可以运行在网页前端的脚本语言,可以基于 html 之上实现更丰富的交互(网页内容的交互显示).异步回调.多线程.定时器.动画等. hello_world.html <html> <head></head> <body> <script type="javascript"> document.write("<h1>hello world!</h1>") <…
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.分布式体系及敏捷并发开发方法所支撑的插件开发体系,以及提供了大量的实体.数据模型设计生…
核心内容概述 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…
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…
样式 剩余样式: 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…
javascript(脚本语言)一.注释语法:1.单行注释 //注释内容2.多行注释 /*注释内容*/二.输出语法js语言格式,尽量靠下写,属双标签<script type=”text/javascript”>中间需要写的内容</script>⦁ alert(“……”),显示信息对话框,括号里是要弹出的信息,例如,alert(“hello”),输出hello.⦁ confirm(“……”),交互对话框,用户可以点击确定或者取消,括号里是要弹出的信息.经常用在需要用户确定的地方.⦁…
我们都知道.PHP是一种非常好的动态网页开发语言(速度飞快.开发周期短--).可是仅仅有非常少数的人意识到PHP也能够非常好的作为编写Shell脚本的语言,当PHP作为编写Shell脚本的语言时,他并没有Perl或者Bash那么强大.可是他却有着非常好的优势,特别是对于我这样的熟悉PHP可是不怎么熟悉Perl的人.  要使用PHP作为Shell脚本语言,你必须将PHP作为二进制的CGI编译,而不是Apache模式.编译成为二进制CGI模式执行的PHP有一些安全性的问题.关于解决办法能够參见PHP…
常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用上. 主要做数据挖掘算法的研究,应该会处理大量的文本. 提到文本处理,相信大部分人都会说应该用Perl.文本处理很强大,语法给人的感觉太乱了, Perl的基本语法,用它做了一些简单的文本处理工作,在Unix或 Linux上做系统管理Perl是最好的选择. Python据说吸收了Perl的一些东西,语…
2015.11.27  客户端脚本语言javascript. (叫这个名字的原因.想要攀高枝,希望变得和他一样通用.关于名字之间的关系类似于雷锋和雷峰塔,巴基斯坦和卡巴斯基,苏格拉底跟格拉苏蒂的关系一样.阿迪王 和阿迪达斯)康师傅和康帅博 也是javaweb中的一个环节,javascript现在做的也很强大.主要应用于b/s部分的b也就是浏览器客户端的部分. 1.javascript语言,在运行的时候是不需要服务器的,只有浏览器就可以对js代码进行解释. 2.脚本语言:自身无法独立在浏览器端运行…
Lua简单介绍 Lua[1]  是一个小巧的脚本语言.作者是巴西人.该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua脚本能够非常easy的被C/C++ 代码调用,也能够反过来调用C/C++的函数,这使得Lua在应用程序中能够被广泛应用.不只作为扩展脚本,也能够作为普通的配置文件,取代XML,Ini等文件格式,而且更easy理解和维护. Lua的目标是成为一个非常easy嵌入其他语言中使用的语言.大多数程序猿也觉得它的确做到了这一点. 非常多应用程序使用LUA…
Sikuli 是一种新颖的图形脚本语言,或者说是一种另类的自动化测试技术.它与我们常用的自动化测试技术(工具)有很大的区别. 当你看到上图sikuli的脚本时,一定会惊呼,这样都可以~!脚本加截图~~~ OK ,在惊讶过后,我们一起来大体的了解一下这个技术. 什么是Sikuli? Sikuli脚本自动化,你在屏幕上看到的任何东西.它使用图像识别,识别和控制GUI组件.这是有用的,当有一个GUI的内部或源代码的访问是不容易的. Sikuli(在墨西哥维乔印第安人的语言里是”上帝之眼”的意思)是由美…
JAVA平台上的网络爬虫脚本语言 CrawlScript 网络爬虫即自动获取网页信息的一种程序,有很多JAVA.C++的网络爬虫类库,但是在这些类库的基础上开发十分繁琐,需要大量的代码才可以完成一 个简单 的操作.鉴于这个问题,我们开发了CrawlScript这种脚本语言,程序员只需要写2-3行简单的代码,就可以制作一个强大的网络爬虫.同 时,CrawlScript由JAVA编写,可以在其他JAVA程序中被简单调用. CrawlScript是一种具有爬虫功能的javascript CrawlSc…
Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类的定义.但相同在Lua中能够利用面向对象的思想来实现面向对象的类继承. 一.复制表的方式面向对象 --Lua中的面向对象 --[[ 复制表方式面向对象 參数为一张表.通过遍历这张表取值,赋给一张空表,最后返回新建的表.来达到克隆表 ]] function clone(tab) local ins =…
文章结束给大家来个程序员笑话:[M] 为了放慢Script.NET的开展,蓝蚂蚁工作室将在近期将Script.NET的全部代码开源,因为开源之前需要将代码先整理一遍,大约需要一周时间,筹划7月初可以整理实现,之后我们会将代码在github上开源. Script.NET是蓝蚂蚁工作室从2000年开始开辟的一套用于Tcl.Python.Perl.Ruby.Lua等脚本语言的集成开辟环境,Script.NET的界面如下:     每日一道理 古人云:“海纳百川,有容乃大.”人世间,不可能没有矛盾和争吵…
今天开始自己的Lua语言学习,Lua脚本语言,是介于应用程序和开发其应用程序的底层编程语言之间,,它很方便调用其它语言,它只是在载入时对其进行编译,而不像我们写的单片机程序是预编译的,先编译好然后写入单片机,它只是在调用时编译,所以脚本语言的灵活性很高,,,,,对于自己为什么又开始学习脚本语言了,,因为需要了 ........ 先打印个 hello world 一,变量 Lua有五种变量类型nil,Boolean,string,Number,table 看一个例子,,,,,,,,,先哄我外甥玩,…
首先要明白,这三种说的混用是指文件级别的混用,就是说一个文件是由一种语言写的.而不是说你这一个文件可以混用这三种语言,注意这是不允许的. 第二要明白,在unity3d中为什么可以使用三种语言混合开发?这个问题简单说一下,我举一个例,如英语和中文,如果你不懂英文,你就需要别人将英文翻译成中文,你才能听懂.同样你懂英文,不懂中文,你就需要把中文翻译成英文.如果世界就二种语言,那就太好了,很可措,不是,如果你听我们的老大哥俄文怎么办,找人将俄文翻译成中文,英文,同时将英文,中文翻译成俄文,这工作量还可…
很偶然的一个想法,在从北京回成都的高铁上:我想要一个计算器.于是在火车上花了十来个小时,完成了一个模型:能够处理+-*/的优先级,以及"()",比如:1+(3+2)*4.这已是一年前的故事了:之后支持了函数,便成为了一门语言(虽然是脚本).先后经过数次根本性地修改,便成为了现在本文的主角:一个基于栈的,支持过程式.函数式.面向对象三种风格的,拥有垃圾收集器的编译型脚本语言--Xmas. 一.Xmas是什么? 首先她是"圣诞节"的简称,用以纪念多年前,还在看凉宫春日的…
自从将Xmas的GC换成现在的非迁移式的全局收集器后,最近几个月一直耗在Xmas上面:最明显的改变就是:更彻底地支持了面向对象.更强大的编译器. 所以,本文就来说说,真正的Xmas. 一.目标 一门语言有什么目标吗?比如C#什么的:可惜的是我并不关心.作为一门脚本语言,其目的无非只有一个:简化编程.方式,也是直接明了:在更高的抽象上构建代码.那么什么是"更高的抽象"?个人认为,大抵是亮点:1.更方便的操作语义 2.更多的限制. 第一点,是指Xmas可以几乎毫无代价地大量使用宿主语言的现…