LR技术——SLR语法分析表

本文详细介绍了如何使用LR(0)项目集规范族构建SLR语法分析表,包括ACTION函数和GOTO函数的定义及构建算法。通过示例文法E -> E + T | T, T -> T * F | F, F -> ( E ) | id,阐述了从项目集到ACTION和GOTO表的转换过程,以及分析表中不同元素的处理方式,如移入、归约、接受和报错情况。" 129641208,13076967,Python打造直播弹幕小工具,"['Python', '开发语言', 'pycharm']
摘要由CSDN通过智能技术生成

我们之前意见写好了自动机,接下来用自动机来构建语法分析表。
语法分析表由两部分组成,一个语法分析动作函数ACTION和一个转换函数GOTO

  1. ACTION函数有两个参数:一个是状态i,另一个是终结符号a(或是输入标记符号$),ACTION[i,a]有四种形式:
    • 移入j,j是一个状态
    • 归约A->β
    • 接受
    • 报错
  2. 我们把定义在项集上的GOTO函数拓展为定义在状态集上的函数:如果GOTO[Ii,A] = Ii,那么GOTO也把状态i和一个非终结符号A映射到状态j。

构建表示,我们约定:

  • si表示移入并将状态i压栈
  • rj表示按照编号j的产生式归约
  • acc表示接受
  • 空白表示报错

示例文法:

E ——> E + T | T
T ——> T * F | F
F ——> ( E ) | id

构建自动机:

在这里插入图片描述

构建语法分析表:

在这里插入图片描述

构建算法:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值