软考15-上午题-【程序设计语言基础】-编译程序基本原理

一、编译过程【回顾】

中间代码生成、代码优化,可省略。 

二、正规式

词法分析的工具。

ab*:这个*针对的是b,即b可以出现0次或多次。

2-1、真题

真题1:

真题2:

真题3:

真题4:

真题5:

三、有限自动机 

词法分析的工具,能正确识别正规集。 

3-1、有限自动机的分类

一个状态,既可以是初态,也可以是终态。 

1、确定的有限自动机-DFA

对每一个状态来说识别字符后,转移的状态是唯一的。

2、不确定的有限自动机-NFA

对每一个状态(节点)来说识别字符后,转移的状态是不唯一的。

【示例】:

S0识别1时,既可以转移到S0,也可以转移到S1。

注意:

一次正确的识别:识别完后,最后状态停留在终态。且每一个字符都能识别成功

补充说明:

(1)a,b:a或者b

(2)∑:空,即不需要识别字符,直接转移

3-2、真题

真题1:

真题2:

真题3:

真题4:

真题5:

真题6:

真题7:

真题8:

真题9:

真题10:

真题11:

真题12:

真题13:

真题14:

真题15:

真题16:

 真题16:

真题17:

真题18:

真题19:

四、上下文无关文法

上下文无关文法被广泛的用于各种程序设计语言的语法规则。

4-1、文法规则

4-2、真题

真题1:

真题2:

真题3:

真题4:

真题5:

真题6:

 真题7:

真题8:

选项中有括号的话,可以直接排除。 

真题9:

真题10:

五、中缀式、后缀式

5-1、中缀式

a ? b

5-2、后缀式(逆波兰式)

a b ?

后缀式又叫逆波兰式。

求值!

5-3、中缀式转后缀式

直接:a ? b ——> a b ?

示例:

1+2*3-4*5 ======》123*+45*-

【注意】:

优先级相同,从右往左!!!(<——)

5-4、后缀式转中缀式

方法一: 用(先进后出)

  • 遇到数字,入栈;
  • 遇到操作符,从栈中弹出两个数字;
  • 两个数字与运算符结合,再入栈。

 

注意:除数和被除数! 

......

方法二、直接:a ? b <—— a b ?

扫描后缀表达式,遇到操作符,就放到前面两个数值中间。

六、语法树

6-1、中序遍历

左子树、根节点、右子树

示例: 

1 - 2 *(3+4)/ 5 

6-2、后序遍历

左子树、右子树、根节点

示例:

上图对应的后缀式:1234+5/*-

6-3、中缀转后缀

1 - 2 *(3+4)/ 5 ————> 1234+5/*-

由此例可知,优先级相同,从右往左!!!

如:2*(3+4)/ 5 先从右转换(3+4)/ 5

6-4、真题 

真题1:

【注意】:

与的优先级>或的优先级 

真题2:

真题3:

真题4:

 真题5:

真题6:

真题7:

真题8:

真题9:

真题10:

真题11:

真题12:

真题13:

 真题14:

真题15:

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值