正规式与有限自动机一(文法转NFA)

正规式转NFA由以下几种基础的情况组成:

(1)单个字符

(2)并运算

(3)连接运算

(4)闭包运算

 

针对非操作符以及各种操作符的详细处理:

   1' 当遇到左括号’(‘时:直接压入栈中即可;

   2' 当遇到右括号')'时:依次弹出符号栈中的符号直到遇到'('为止。在依次弹出符号栈中的符号时对NFA栈中的NFA元素的操作是:弹出NFA栈顶的两个元素,进行相应的符号操作后合成一个新的NFA并压入栈中;

      3' 当遇到或操作'|'时:此操作符的优先级最低,在压入栈时需要对符号栈中'('以上的符号进行判断,对于优先级高于或操作的连接操作需要将其先弹出后进行连接操作,直到栈中不存在连接操作后再将'|'压入符号栈中;

    4' 当遇到闭包操作'*'时:此操作符的优先级最高,无须将其压入符号栈中,直接将NFA栈中的栈顶NFA弹出栈后进行闭包操作后再将新的NFA压入NFA栈;    

    5' 当遇到隐含的连接操作'.'时:该操作符是隐含在正规式中的 ,如:ab,a(b|c)*。因此在扫描过程中,需要对是否添加连接符进行判断。其有以下三种情况:当遇到非运算符时,需要对其后面的符号进行判断,若遇到左括号或非运算符时,则需要往符号栈中添加连接符'.';当遇到闭包运算符'*'时,需要判断其右边的符号,若非'|'和')'则需要在符号栈中天年假连接符'*';当遇到右括号')'时需要对其右边的符号进行判断,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值