大一 大二学生如何在大学里面就拿到软考中级软件设计师(5)

欢迎来到我的博客,我会带着大家一起学习软件设计师的知识,来帮助大家更好的学习。大家如果想要看往期内容,可以点击下面连接:

 大一 大二的学生如何在大学里面就拿到软考中级软件设计师(1)

​​​​​​https://blog.csdn.net/2303_79274306/article/details/140398388

  大一 大二的学生如何在大学里面就拿到软考中级软件设计师(2)

https://blog.csdn.net/2303_79274306/article/details/140415177

 大一 大二的学生如何在大学里面就拿到软考中级软件设计师(3)

https://blog.csdn.net/2303_79274306/article/details/140569724

 大一 大二的学生如何在大学里面就拿到软考中级软件设计师(4)

https://blog.csdn.net/2303_79274306/article/details/140656985

如果想要了解以下软考都考哪些题,可以点击下面连接: 

2023年上半年全国计算机技术与软件专业技术资格考试(软件设计师 上午试卷+下午试卷) 

 https://download.csdn.net/download/2303_79274306/89559561

2022年下半年全国计算机技术与软件专业技术资格考试(软件设计师 上午试卷+下午试卷) 

 https://download.csdn.net/download/2303_79274306/89566344

那么,我们接下来就开始今天的学习吧!!!

2.2语言处理程序基础

2.2.2编译程序基本原理

文法 
  • 描述语言语法结构的规则称为文法。一个形式文法式一个有序四元组G=(V_{N},V_{T},P,S) ,其中:

V_{N}:非终结符集合。不是语言组成部分,不是最终结果,可理解为占位符。

V_{T}:终结符集合。是语言的组成部分,是最终结果。V_{N}\bigcap_{}^{}V_{T}=\o\varnothing

P:产生式集合。形如α→β。用非终结符推导出终结符的规则。

S:起始符。是语言的开始符号。

终结符:最终结果,不能推导出其他元素。

非终结符:能够推导出其他元素。

产生式:即非终结符推导出终结符的公式。

正则闭包:A_{}^{+}=A_{}^{1}\bigcupA_{}^{2}\bigcupA_{}^{3}\bigcup````\bigcupA_{}^{n}\bigcup````(也就是所有幂的组合)

闭包:A^{_{}^{*}}=A_{}^{0}\bigcupA_{}^{+}(在正则闭包的基础上,加上A_{}^{0}={\xi}) 

例如:a^{_{}^{*}}={\xi,a,aa,aaa,````},(ab^{_{}^{*}})={\xi,ab,abab,ababab,````}。

文法分类

程序设计语言的绝大多数语法规则可以采用上下文无关文法进行描述。语义是上下文有关的。

正规表达式
  • 用于词法分析,对于字母表\sum,其上的正规式及其表示的正规集可以递归定义如下:

(1)\varepsilon是一个正规式,它表示集合L(\varepsilon)={\varepsilon}。

(2)若a是\sum上的字符,则a是一个正规式,它所表达的正规集为{a}。

(3)若正规式r和s分别表示正规集L{r}和L{s},则:

r|s是正规式,表示集合L(r)\cupL(s)。

r·s是正规式,表示集合L(r)L(s)。

r*是正规式,表示集合(L(r))*。

(r)是正规式,表示集合L(r)。

  • 示例

\sum={a,b},如下列出了\sum上的一些正规式和相应的正规集。

有限自动机
  • 有限自动机分为两个:确定的有限自动机(DFA)和不确定的有限自动机(NFA)。

DFA是NFA的特例:对于每一个NFA,都可以转换为DFA。

  • 区分:
区别DFANFA
初态有且只有一个初态可以有多个初态(非空)
终态非空终态集可空终态集
输入(弧上的标记)输入仅能为长度为1的单个字符输入可以是字符或正规式。同一个字符可以出现在同状态的多条弧上
后继状态若有后继状态,则后继状态是唯一的后继状态不是唯一的
其他易于程序易于人工设计
  • 正规式与有限自动机之间的转换

(1)有限自动机转换为正规式:

(2) 正规式转换为有限自动机:

语法分析方法
  • 自上而下语法分析法: 最左推导,从左至右。给定文法G和源程序串r,从G的开始符号S出发,通过反复使用产生式P对句型中的非终结符进行替换(推导),逐步推导出r。
  • 递归下降分析法:原理是利用函数之间的递归调用,模拟语法树自上而下的构造过程,是一种自上而下的语法分析方法。
  • 自上而下语法分析方法:最右推导,从右至左。从给定的输入串r开始,不断寻找子串与文法G中某个产生式P的候选式进行匹配,并用P的左部代替(归纳)之,逐步规约到开始符号S。
  • 移进-归约分析法:设置一个栈,将输入符号逐个移进栈中,栈顶形成某产生式P的右部时,就用左部去代替,称为归纳。这个思想时通过右部推导出左部,因此是自上而下语法分析的核心思想。

编译和解释:都是将高级语言翻译成计算机硬件认可的机器语言加以执行。

区别编译解释
目标代码生成,优化不生成
独立的可执行文件生成不生成,逐行边翻译边执行
执行效率较快(翻译一次,多次运行)较慢(反复扫描源程序)
占用内存较少较多
灵活性较低较高(反复扫描源程序)
可移植性较差较高

 

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会编程的 猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值