本篇讲解编译原理基础知识,看完选择不必再死记硬背,大题不再蒙圈 ^_^
一 编译概述
1.翻译程序的三种方式:编译,解释,汇编
2.编译程序的五个阶段:词法分析,语法分析,语义分析和中间代码生成,代码优化,目标代码生成(其中中间代码生成和代码优化非必须)
二 文法与语言
2.1 符号串和语言
字母表:字母表是有穷非空的符号集合,通常用大写英文字母和希腊字母Σ表示
符号串:由字母表中的符号组成的又穷序列,通常由小写英文字母表示
字母表就像一个装满各种小零件的盒子,这些零件就是我们的符号,它们可能是各种形状,颜色和大小的字母,数字或特殊符号,但这个盒子是有限的,只能装下有限多的小零件;符号串就是用这些零件编手链,你可以决定零件的个数,顺序,是否重复使用等,或者什么都不穿做一条“空串”
符号串的前缀和后缀:若z=abd是字母表Σ={a,b,c,d}上的符号串,则ε,a,ab,abd都是z的前缀;ε,d,bd,abd都是z的后缀(前缀:从第一个字符开始到某个字符为止的子串;后缀:从某个字母开始到最后一个字符为止的子串)
语言:由字母表上的一些符号串组成的集合,空集Ø是一个语言,仅含一个空符号串的集合{ε}也是一个语言。Ø和{ε}是不同的语言