文章目录
一、解释与编译
解释器:翻译时不生成独立的目标程序,解释程序和源程序都参与程序运行过程
编译器:翻译时独立生成目标程序,源程序和编译程序不再参与目标程序的运行过程
二、程序设计语言的成分
顺序、选择、循环结构
三、传值与传地址
四、编译、解释与翻译阶段
反编译:编译的逆过程,将可执行文件转换成等价的汇编程序(无法获得源程序)
源程序—》词法分析
-》记号流–》语法分析
–》分析树(语法树)–》语义分析
真题一
真题二
真题三
真题四
五、符号表
真题一
真题二
真题三
六、编译过程
源程序—》词法分析
-》记号流–》语法分析
–》分析树(语法树)–》语义分析
6.1、词法分析
6.2、语法分析
6.3、语义分析
有语义错误是可以编译成功的,例如a/0;这是符合语法的,也符合静态语义,编译器检验不出来这个是错的,只有运行才会报错,也就是动态语义,动态语义错误常见的有死循环
6.4、目标代码生成
6.5、真题
无法发现动态语义错误
有语义错误是可以编译成功的,例如a/0;这是符合语法的,也符合静态语义,编译器检验不出来这个是错的,只有运行才会报错,也就是动态语义
6.6、中间代码
七、正规式
*
代表0~n个,这里b必须有一个
八、有限自动机
反着的3代表无须识别直接通过
以a结尾到达终态,只有A选项符合
这种题目难度大一些,首先要知道是什么意思,例如C选项的前面部分0是指这个0我可以有0个到n个,可以把理解为n,n取多少看你自己心情,取多少那就表示这个东西有多少个,那也就是我可以00(10),我前面取两个0,这个是没问题的,后面的就不重要了,然后上面00跑不通,所以不符合,D也不符合,B呢表示0或10我可以随便取,(0|10)的意思是两个随便取一个,取0或者10都可以,但是它有个*,说明随便我取多少,我取*为1,同时取10,那跑不通,B不符合
九、上下文无关文法
真题1
真题2
真题3
真题4
真题5
真题6
真题7
十、中缀后缀表达式
真题1
真题2
真题3
真题4
真题5
真题6
真题7
真题8
真题9
真题10
真题11
十一、杂题
真题1
真题2
真题3
真题4
真题5
真题6
真题7
真题8
真题9
真题10
真题11
真题12
真题13
真题14
真题15
真题16
真题17
真题18
真题19
真题20
真题21
真题22
真题23
真题24
真题25
真题26
真题27