StrExpTest

来源:互联网 发布:软件退税流程 编辑:程序博客网 时间:2024/06/09 23:13

StrExp测试

StrExp是在线解析文本字符串并计算结果的类,“思贝”软件计算功能使用的就是这个类 
 这就算是揭开思贝的第一层神秘面纱吧!

下面就直接摘录《DJL语言基础》的有关内容了(我语文作文现在还没写呢……)

先看一个StrExp的例子:

pow(Math_E,2)*0.5-1>1

它将返回一个布尔值(truefalse当中的一个),表明的结果。

StrExp是用于表达变量数值的手段,用字符串书写数学表达式用以对变量赋值。StrExp并没有任何革新,只是由于制作思贝时,所使用的ActionScript 3.0 语言并不是主流语言,基于ActionScript 3.0的对表达式解释并计算功能还没有成熟。StrExp文本表达式规则就是实现这一功能而设立表达式的书写规则。

主要在自定义的思贝元件上使用StrExp书写的表达式。有关创建思贝元件,请参见相关文档。

StrExp也只是一个过度标准,它不能很好地实现表达式解释功能,没有推广价值。因此,DJL标准并不包含StrExp规则。但是它作为当前版本思贝中唯一的表达式解释方式,也是非常必要的。

 

 

文本表达式(StrExp) 错误

编号

思贝错误提示内容

备注

100

表达式不能为空。

101

_函数的参数,应该_

函数的参数的数量错误

102

不存在名称为_的函数。

 

103

在表达式中,_后不应该紧跟括号_

 

104

括号中没有内容。

 

105

函数的参数不能为空。

 

106

_不能被正确识别为标识符,因为不符合变量的命名规则。

 

110

标识符_因缺少_,而不能被识别为函数。

 

111

表达式中的_是缀余的符号。

 

112

表达式中的_运算符位置错误。可能因为此运算符找不到操作数,或者是此运算符是缀余的符号。

 

113

表达式_的结果无法继续进行计算。请检查其内部和周围是否有多余的空白字符。

 

150

标识符_未定义。

 

151

StrExp中的变量_,其类型_是不被允许的。StrExp中的变量只允许为_

 

152

表达式_的结果无效。

 

153

__运算,它_

运算符号错误

154

_函数_

函数的参数的数据类型错误

 

StrExp中的变量名称规则
作为一个变量的名称,必须遵守以下几点:

 

1.         开头不允许为数字
2.         ASCII 128个字符之外的任意字符均可以作为名称的组成; ASCII字符集中所有128个字符,只允许 0 9 、大写拉丁字母 A Z 、小拉丁字母 a z 、美元符号 $ 这几个字符作为名称的组成。

注意:这与在DJL中的名称规则不同。   

StrExp支持的运算符及运算优先级
注:表中“o”表示操作数,“functionName”表示函数名称。

(o)
functionName(…)
 
+o
-o
!o
 
o^o
 
o*o 
o/o
o%o
 
o+o
o-o
 
o>o
o<o
o>=o
o<=o
o==o
o!=o
o===o
o!==o
o&&o
 
o||o
 

StrExp可自定义的变量的类型

类型
说明
String
字符串
Boolean
布尔值
Number
数字,整型、浮点数等表达数值的统一类型
Segment
字符串表达式片段,不进行计算的一整段的字符串

 
StrExp内置的常数

常数标识符
数值
Math_E
2.71828182845905
Math_LN10
2.302585092994046
Math_LN2
0.6931471805599453
Math_LGE
0.4342944819032518
Math_LOG2E
1.442695040888963387
Math_PI
3.141592653589793
Math_SQRT1_2
0.7071067811865476
Math_SQRT2
1.4142135623730951

StrExp内置函数列表
(下表与《DJL语言基础》所载相同)

名称
函数
(这里的表达方式是使用一般计算机语言的表达方式,由于制作匆忙,不能详述。可参见《StrExp中的函数》中的示例)
参数数量
描述
分支
 
if
if(val1:Boolean,val2:*,val3:*):*
3
如果val1的值为true,则返回val2
如果val1的值为false,则返回val3
case
case(val1:*,val2:*,...):*
2
如果val1完全等于val3(判断规则:va1===val3),则返回val4,结束程序;否则继续以下步骤
如果val1完全等于val5(判断规则:va1===val5),则返回val6,结束程序;否则继续以下步骤
......
所有val3val5...等奇数位参数都不完全等于(!==)val1,则返回val2
数学:非基本数学函数
 
abs
绝对值
abs(val:Number):Number
1
返回val的绝对值
max
最大值
max(val1:Number,val2:Number,...):Number
2
返回参数中最大的值,至少有两个参数
min
最大值
min(val1:Number,val2:Number,...):Number
 
2
返回参数中最小的值,至少有两个参数
floor
向下取整
floor(val:Number):Number
1
返回小于等于val的最大整数
round
四舍五入
round(val:Numbe):Number
1
返回最接近val的整数,使用四舍五入为计算规则
ceil
向上取整
ceil(val:Number):Number
1
返回大于等于val的最小整数
random
随机数
random():Number
0
返回大于等于0,小于1的随机数
数学:对数、指数
 
exp
自然常数幂
exp(val:Number)
1
计算自然常数的幂
pow
pow(val1:Number,val2:Number)
2
计算val1val2次幂
log
对数
log(val1:Number,val2:Number)
2
计算以val1为底val2的对数
lg
10底对数
lg(val:Number)
1
计算以10为底的对数
ln
自然对数
ln(val:Number)
1
计算以自然变量为底的对数
数学:三角函数
 
sin
正弦
sin(val:Number):Number
1
返回val(以弧度制计算)的正弦值
cos
余弦
cos(val:Number):Number
1
返回val(以弧度制计算)的余弦值
tan
正切
tan(val:Number):Number
1
返回val(以弧度制计算)的正切值
arcsin
反正弦
arcsin(val:Number):Number
1
返回val的反正弦值(以弧度制返回)
arccos
反余弦
arccos(val:Number):Number
1
返回val的反余弦值(以弧度制返回)
arctan
反正切
arctan(val:Number):Number
1
返回val的反正切值(以弧度制返回)
arctan2
反正切2
arctan2(y:Number,x:Number):Number
2
返回点(x,y)所经过的三角函数线所代表的弧度值
注意y坐标是此函数的第一个参数。
类型转换
 
String
字符串
String(val:*):String
1
将任意类型数据转换为字符串
Boolean
布尔值
Boolean(val:*):Boolean
1
将任意类型数据转换为布尔值
Number
数字
Number(val:*):Number
1
将任意类型数据转换为数字
Segment
表达式片段
Segment (val:*):StrExpNull
1
将任意类型数据转换为字符串表达式的片段
字符串
 
charAt
charAt(str:Strubg,index:Number=0):String
 
 
1~2
返回字符串A在位置B的字符。
charCodeAt
charCodeAt(str:String,index:Number=0):Number
 
 
1~2
返回字符串A在位置B的字符的编码。
fromCharCode
fromCharCode(val1:Number...):String
1
返回字符的编码串所代表的字符串,每个字符的编码作为此函数每个参数,返回它们按顺序组成的一条字符串
indexOf
indexOf(val:String,in:Stirng,startIndex:Number=0):Number
2~3
in字符串的startIndex位置后(startIndex代表的位置),查找字符串val的索引。如果找不到,则返回-1
length
length(str:String):Number
1
返回字符串的长度
substring
substring(str:String,startIndex:Number,endIndex:Number=0x7fffffff):Stirng
 
 
2~3
返回字符串str的子字符串。此字符串的开头为str中的startIndex,最后一个字符为str中的endIndex-1
toLowerCase
toLowerCase(str:String):String
1
将字符串中的英文大写字母全部转换为小写
toUpperCase
toUpperCase(str:String):String
1
将字符串中的英文小字母全部转换为大写
字符串与数字互化
 
parseFloat
parseFloat(val:String):Number
1
将小数的字符串转化为数字
parseInt
parseInt(val1:String,val2:Number):Number
 
 
2
将整型数字的字符串,按不同位数转化为数字
radix
radix(val1:Number,val2:number):String
2
将视为整型数字按不同位数转化为字符串
角度、数字互化
 
toRadian
化弧度
toRadian(val1:Number,val2:Number=0,val3:Number=0):Number
 
 
3
将角度转化为弧度
toDegree
化角度
toDegree(val:Number):Number
1
将弧度转化为角度