一、确定有限自动机(DFA)
例如:
图中?是瑟克马。
二、语法分析:
语法分析以单词符号作为输入,分析单词符号串是否形成符号语法规则的语法单位,如表达式、赋值、循环等,按语法规则分析检查每条语句是否有正确的逻辑规则。
语法分析的方法:
自上而下分析法;自下而上分析法。
三、语义分析阶段
检查原程序是否存在语义错误,并手机类型信息供后面的代码生成阶段使用,只有语法和语义都正确的源程序才能翻译成正确的目标代码。
语义分析的主要工作是进行各类分析和检查。赋值语句的有段和左端的类型不匹配。表达式的除数是否为零。
四、中间代码生成阶段
中间代码生成阶段和工作是根据语义分析的输出生成中间代码。
五、优化代码阶段
对前阶段产生的的中间代码进行变换或者进行改造,目的是使生成的目标代码更为高级,即省时间和省空间。
六、目标代码生成阶段
把中间代码变换成特地机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。这是编译的最后阶段,它的工作与硬件系统的结构和指令的含义有关。
七、程序语言的控制结构
1.表达式:
- 前缀表达式:也被称为波兰表示法,其特点是将操作符置于操作数之前,如:-x+345.
- 中缀表达式:即我们常用的表示方式:(3+4)*5-6
- 后缀表达式:又被称为逆为波兰发,其特点是将操作符至于操作数之后,34+ (其实是3+4)
2.前缀表达式:
从右至左扫描表达式,遇到数字时,将数字压入入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对他们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即表达式的结果。
3.中缀表达式:和一般语法一样,了解一下就可以。
4.后缀表达式:
与前缀表达式类似,只是顺序从左至右
八、操作符的优先级:
- 指针最优,单目预算由于双目预算。如正负号。
- 先乘除(摸),后加减。
- 先算术运算,后移位运算,最后位运算。
- 逻辑运算最后计算
九、语句间的结构:
- 顺序结构
- 选择语句
- 循环语句
十、过程控制(函数)
参数传递的方式
- 传值调用–数据传送是单向
- 引用调用(地址调用)–数据传送是双向的