3.1 词法分析器的作用
3.1.1 float limitedSquare ( x ) { float x ;
return ( x <= -10.0 || x >= 10.0 ) ? 100 : x * x ;
}
除了标点符号/运算符号/赋值符号,其他都有属性值(词法值?)
3.1.2 Here is a photo of <B> my hourse </B>
<P> <IMG SRC = "HOUSE.GIF" > <BR>
See <A HREF = "morePix.html" > More Pictures </A> if you liked that one. <P>
3.3 词法单元的归约
3.3.2
1)a(a|b)*a a后面0个或多个a或b,最后加个a
2)0个或多个b或者前面加个a,这个表达式重复0次或多次
3)0个或多个a或b,后面接个a,再接个a或b,再接个a或b
4)3个b,然后随意插入a
5)语言描述起来比较困难:aa或bb重复0次或多次,后面接0次或多次(ab或ba,接0次或多次aa或bb,接ab或ba,接0次或多次aa或bb)
3.3.3长度为n的字符串
1)前缀:n+1个
2)后缀:n+1个
3)真前缀 n-1个
4)子串
子串数 = 非空子串数+1
非空子串数计算如下:
删除前缀长度可能是 0, 1, 2 ...,n-1
对应的删除后缀的可能长度为n-1 n-2 n-3 ...,0 - 0
因此总数为n+n-1+...+1+1=(n+1)*n/2+1
5)子序列数
c(n,0)+c(n,1)+...+c(n,n) = 2^n
3.3.4[sS][eE][lL][eE][cC][tT]
3.3.5 2)以后的题太难了,靠自己想搞不定,从网上搜的
1)uv=[b-df-hj-np-tv-z]
uv*auv*euv*iuv*ouv*uuv*
2)a*b*c*....y*z*
!!3)开始是/*,结尾是*/,中间可以有/*,但不能有*/,除非"*/"。
other -> [^/*//]
notend ->[other*
///*(notend"*/"notend)*/*//
!!4) ^(?![0-9]*([0-9])[0-9]*\1[0-9]*)[0-9]*$
!!5)^(?![0-9]*([0-9])[0-9]*\1[0-9]*\1[0-9]*)[0-9]*$
!!6)^(?!(b*ab*ab*)*ab*$|(a*ba*ba*)*$)(a|b)*$
!!7)