(2020年下半年软件设计师49题)程序设计语言的大多数语法现象可以用CFG(上下文无关文法)表示。下面的CFG产生式集用于描述简单算术表达式,其中+ - * 表示加、减、乘运算,id表示单个字母表示

这篇博客探讨了2020年下半年软件设计师考试中的一道题目,涉及使用上下文无关文法(CFG)表示简单算术表达式。作者提供了三种解题思路:排除法、自底向上推和自顶向下推,并详细解释了每个方法的逻辑,最终确定了正确答案。文章强调不同解题方法的优缺点,并鼓励读者通过实践理解CFG在程序设计语言中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

后续应该还会发布一些关于 软件设计师题目的解题思路,或软件设计师的笔记资料,有需要的可以来我的个人主页搜索

2020年下半年软件设计师上午题49题

  • image-20210521222236521
  • 答案:A

题解

  • image-20210521222409701

三种解题思路

第一种 排除法

  • 这相当于硬凑,首先,上下文无关管文法中没有()和 / 符号,所以可以直接排除B和D选项
  • 仅限用于这题,根据符号排除了BD选项,题目有说明,id表示单个字母表示变量,C选项中有数字,这CFG无法产生数字,所以C也可以直接排除,但还是建议看下第二种推理过程

第二种 自底向上推

  • C需要 * - + 这三个运算符

    • + 和 - 可以有不少符合的条件实现,但是* 只能由T->TF,并且要保证a-b的要求,后面久必须跟上一个 - ,所以F转为-F,现在的得出的式子
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值