编译原理与编译构造 由语言构造文法2

方法3 等价法

基本思想:产生的两边应该具有相同的特性

例1:

L={ w|w(a,b),and there are same as and bs in w}

解:

  1. SaA|bB 这一步是说,句子可以以 a|b 开头,之后加一个 ab 数量不等的式子

其中, S:|a|=|b|A:|a|+1=|b|B:|a|=|b|+

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
算符优先语法分析器是一种自底向上的语法分析器,它使用了一种称为算符优先分析法的技术,用于分析输入的符号串是否符合给定文法的语法规则。下面是算符优先语法分析器的构造算法: 1. 定义文法的终结符号集合和非终结符号集合。 2. 定义操作符集合和它们的优先级关系。 3. 构造算符优先文法。 4. 构造算符优先关系表。 5. 读入待分析的符号串。 6. 初始化分析栈,将$#$和文法的起始符号入栈。 7. 从符号串中读入一个符号。 8. 比较栈顶符号和当前符号的优先级关系。 9. 如果栈顶符号的优先级高于或等于当前符号,则弹出栈顶符号进行归约。 10. 如果栈顶符号的优先级低于当前符号,则将当前符号入栈。 11. 如果栈顶符号为$#$并且当前符号也为$#$,则分析成功;否则,转到步骤8。 下面是算符优先文法构造规则: 1. 定义文法的起始符号。 2. 定义文法产生式。 3. 为每个操作符定义一个优先级。 4. 为每个产生式定义一个优先级。 算符优先关系表是一个二维表,它记录了任意两个操作符之间的优先级关系。对于操作符$a$和$b$,如果$a$的优先级高于$b$,则在表中标记$a$在$b$的左边;如果$a$的优先级低于$b$,则在表中标记$a$在$b$的右边;如果$a$和$b$的优先级相等,则在表中标记$a$和$b$相等。 算符优先语法分析器可以用C或者C++等编程语言来实现,具体实现方式可以参考算法流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值