词法分析1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QQQZSJ/article/details/79952961

词法记号的属性,属性用来对记号里面的属性加以进一步区分。 


<a1,a2,a3,a4,...,an>成为n元式

a1成为第一元,a2称为第二元,类推。。。。;


比如:position = initial + rate * 60 的记号和属性

<id,指向符号表中position条目的指针>,第二元表示属性

<assign_op>,赋值号--单独作为记号,不需要第二元作为属性加以区分

<id,指向符号表中initial条目的指针>第二元表示属性

<add_op>单独作为记号,不需要第二元作为属性加以区分

<id,指向符号表中rate条目的指针>第二元表示属性

<mul_op>单独作为记号,不需要第二元作为属性加以区分

<number,整数值60>


词法分析结束之后,每次要返回记号和属性。

二、串和语言

-字母表: 符号的有限集合 ,例如    ={0  ,1}

-串: 符号的有穷序列,例如    0110

-语言:字母表上的一个串集  {0,00,000,。。。}

串的运算:

-连接(积) xy,  s空串=空串s=s 

-幂          s的0次方为空,s的i次方=s的i-1次方s


语言上的运算:

-并:L∪M = {s|s∈L或者s∈M}

-连接 : LM={st|s∈L且t∈M},即前一部分部分属于前面,后一部分属于后面

-幂 :L的0次幂是{&},L的i次幂是L的i次幂L

-闭包:L*=L0∪L1∪L1∪....,数字部分指的是 次幂

-正闭包: L+  = L0∪ L1∪...,数字部分指的是 次幂


例题:

L:{A,B,C,D,...,Z,a,b,c,...z},D:{0,1,2,3,...9}

L∪D: 为长度为一的句子,为字母或数字

LD:长度为2的句子,前部分为字母,后部分为数字

L6次方:长度为6的句子,6个符号都是字母

L*:任意长度的字母串,包括空串

D+ : 定义的是无符号整数

L(L∪D)*:就是我们定义的字母开头,后跟字母或数字的标识符的定义。长度不固定,*可以重复多次。

上面的缺点是不便于计算机进行操作处理。

正是由于这样不便于计算机处理,所以,正规式 就正式开始进入视野!!!



正规式 


正规式            定义的语言            备注

&                {&}                    我用&符号代替空的那个符号,目前不知道如何找到那个符号

a                {a}                    a∈ 字母表

(r)|  (s)        L(r)∪L(s)        r,s是正规式

(r)(s)            L(r)L(s)            r,s是正规式

(r)*            (L(r))*                r是正规式

(r)            L(r)                r是正规式


约定:((a)(b)*)|(c) 等价于 ab*|c

例题:

字母表={a,b},计算下式:

-a|b                    {a,b}

-(a|b)(a|b)             {aa,ab,ba,bb}

-aa|ab|ba|bb            {aa,ab,ba,bb}

-a*                        由字母a构成的所有的串集,包括空串

-(a|b)*                    由a和b构成的所有的串,包括空串

-(00|11|((01|10)(00|11)*(01|10)))*       偶数个0和偶数个1构成,符号要求的所有01串,都是该正规式规则下的句子。例如:01001101000010000010111001就是上面正规式的句子。



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页