这个项目是我去年做毕业设计时写的,毕业之后就没有再坚持下去,但是一直对这方面挺感兴趣的,想在业务时间把这个项目继续下去,不知道大家有没有什么好的想法能让这个项目更有意义,求指教。
用 Flex 和 Bison 配合实现的,词法和语法解析。 用到了 libQt5Core (纯 C++用不习惯,为了撸的快点。。。)
脚本名字叫: zScript (求不要喷我没文化)
变量使用关键字“ var ”进行定义。 zScript 提供了两种形式的变量定义语句。
var 标识符;
该语句的含义是:定义变量名为“标识符”的变量。例如:
var a;
该语句的作用是:定义一个名为“ a ”的变量。
var 标识符 = 表达式;
该语句的含义是:定义变量名为“标识符”的变量,且给变量赋值为表达式的结果。例如:
var a = 1 + 2;
该语句的作用是:定义一个名为“ a ”的变量,且赋值为 3 。 “ var ”关键字可同时定义多个变量,每个变量之间使用符号“,”分割。
匿名函数定义的一般形式为:
(形参列表) {
语句组
}
该语句的含义是:生成一个函数对象,例如:
(a) {
console.log(a);
}
该语句的作用是:定义一个函数,它有一个名为“ a ”的形参,执行此函数会将 a 的值打印到屏幕上。 形参列表,可为空、一个、多个,多个形参之间使用“,”分割。
数组定义的一般形式为:
var a = [表达式 1, 表达式 2, ...];
该语句的含义是:生成一个数组,数组元素为中括号中表达式的结果。例如:
var a = [1, 2, 3];
该语句的作用是:定义一个包含三个元素的数组,元素的值分别为 1 、 2 、 3 ,然后赋值给变量 a ; 数组使用“[”“]”定义,中间内容可以为空、一个表达式、多个表达式,多个表达式之间使用“,”隔开。
a = a[0];
取数组元素语法和 C 语言一样,都是中括号中写入数组下标。
一个选择结构,包括一组或若干组操作,每组操作称为一个分支。通过选择控制语句可以实现选择结构。选择控制语句包括 if 语句、 switch 语句及起辅助控制作用的 break 语句。 If 语句用于计算给定的表达式,根据表达式的值是否为假,决定是否执行某一组操作。 Switch 语句首先求解一个表达式,然后根据计算结果的值,从哈希表中查询该从哪一组操作开始执行。 Break 语句用于 switch 结构中,用于终止当前 switch 结构的执行。 ####if 语句 zScript 提供了两种形式的 if 语句。
if(表达式)
{
语句组
}
该语句的含义是:只有表达式的值为非零值时,才执行其内部的语句组。例如:
if ( a > b )
{
console.log(“ hello ”);
}
该语句的作用是:当 a 的值大于 b 的值时(此时,“ a>b ”的值为真,为非假值),在屏幕上显示“ hello ”;否则,不显示“ hello ”。
if ( 表达式 )
{
语句组 1
} else {
语句组 2
}
该语句的含义是:当表达式的值为非假时,执行语句组 1 ,而不执行语句组 2 ;否则,即表达式的值为假时,执行语句组 2 ,而不执行语句组 1 。例如:
if ( a > b )
{
console.log(“ hello1 ”);
} else {
console.log(“ hello2 ”);
}
该语句的作用是:若 a 的值大于 b 的值(此时“ a>b ”为真,为非假值),则在屏幕上显示“ hello1 ”,而不显示“ hello2 ”;否则,即表达式的值为假时,显示“ hello2 ”,而不显示“ hello1 ”。
Switch 语句与 if 语句一样,也可以实现分支选择。但 if 语句是判断一个表达式的值是否为假,决定是否执行某个分支;而 switch 语句是计算一个表达式的值,根据计算结果,从哈希表查询从哪个分支开始执行代码。 Switch 语句的一般形式为:
switch( 表达式 )
{
case 常量 1 :
语句组 1
case 常量 2 :
语句组 2
...
case 常量 n :
语句组 n
default:
语句组 n + 1
}
switch 语句的执行过程:
其中 break 的一般形式为
break;
while 语句的一般形式为
while( 表达式 )
{
循环体
}
while 语句的执行过程:
小括号中表达式的值是否为假,决定着循环体是终止还是继续循环。因此,该表达式的值为循环条件。 while 循环语句的执行特点是,先判断循环条件是否成立,然后决定是否执行循环体。 当 while 语句的循环体只包含一条语句时,包含该循环体的“{}”可以省略。
在两种循环语句中, for 语句最为灵活。 for 语句的一般形式为:
for (表达式 1; 表达式 2; 表达式 3)
{
循环体
}
for 语句的执行过程:
对象定义的一般形式为:
{
属性名 1: 属性的值,
属性名 2: 属性的值,
...
属性名 n: 属性的值,
属性名 n+1: 属性的值
}
例如:
var object = {
name: "张三",
age: 18
};
变量 object 即是一个对象,它包含两个属性。 注:当对一个对象不存在的属性赋值时会将此属性加入到对象中,例如:
object.sex = '男';
对象 object 中就会多出一个“ sex ”属性。
理论上来说是可以跨平台的,但是其它平台还没适配,目前只能在 Linux 下正常使用。 上面的介绍没有覆盖所有的语法,比如函数中返回多个值之类的 项目中附带了一个 dome ,用 zScript 写的一个终端中跑的贪吃蛇游戏。
1
to2false 2017-03-17 14:38:11 +08:00
标题看前半段我就想进来说,写个图书馆管理系统 [手动滑稽]
|
2
myway 2017-03-17 14:41:23 +08:00
2333 ,楼上+1 。。。
|
4
fy 2017-03-17 16:22:12 +08:00
|
5
hzw94 2017-03-17 23:42:08 +08:00
都是大神,一个渣渣的我路过
|
6
cwing 2017-03-18 09:04:16 +08:00
随便选个算法 钻研一下~ 本科论文又不需要太高要求~又不用写 XX 系统那些脏活~哈哈
|