解释编译程序翻译阶段背诵
C
语义分析背诵
正规式题背诵
**星号表示闭包:出现0次或者多次
星号一般是就近原则,左边最近的第一个
星号你可以自定义数
1旁边没有闭包符号所以控制不到1所以这题选b
有限自动机
第一位和最后一位都必须是0
a这里的()非常通用,每一个重复的位置都可以选择0或1
p101
a只能有两个 且一个在头一个在尾
c为什么错,因为如果用010 00 多家两个0就不行 因为*只能01
无关问
终结符号就是放在最后的后面不能再有了
**不包含任何符号比如字母 **
s可以推出Bd是因为最上面那个s有 B推e也有
D 不能往下继续推的。一般小写就是终结符号集
S0不是整体是s和0
id可以变成a到z
后缀式题
后缀式就是把符号房后,比如a>b写成ab>
先算前是因为优先级高
中缀式
树
左根由
后缀式左右跟
每单独一层跟另一层就有资格加括号
杂题
**解释器不生成独立的目标程序 参与程序的运行过程中
编译器生成独立保存的目标程序,不参与目标控制
以上两个都可以用高级语言编写 都进行优化
程序三种控制结构 顺序 选择 重复(循环)
类型转换是小的向的大的转 不会损失精度
常量没有存储单元 变量有
有结合相当于赋值 从右往左
& 直邮两边都为真才为真
|| 两边都为假才为假
! 取反
主函数里是实参 调用函数里是形参
传引用实参不能是任意的表达式
词法语法语义分析目标代码生成是不可省略的 中间代码可省略
解释方式不包括目标代码生成 最少只有词法语法语义分析
解释器参与运行控制程序执行速度编码是你
声明语句是看符号
可执行语句 翻译中间或者目标代码
动态的语义错误在运行的时候才能检查出
语法分析可以发现程序中所有语法错误
语义只能发现静态语义错误
动态的只能在运行的时候发现
目标代码生成阶段和目标机器体系结构密切相关。它可以分配寄存器
语法分析只需要确定语法是否正确其他不管 比如int a=“abc”;语法分析
会判对,因为有=有;符合规则 但是语义有问题 整数不等于字符串
词法分析: 扫描字符识别单词。还可以用于有穷自动机
编译程序分析源程序的阶段依次是词法分析语法分析 语义分析
符号表 操作
中间代码跟具体机器无关 所以不同语言可以产生同一种中间代码 还可以进行优化处理
还可提高程序可移植性 可用树和图表示
。
常见的中间代码有:后缀式,三地址吗,三元式 四元式和树。s三s三s四s树后
转移状态有两个的时候是不确定的有限自动机 只有一个是确定
后缀式(逆波兰式)可以用栈求值 a?b转ab?
中缀式 ab? 转a?b 从左往右
题目求简单算数表达式就是中缀式 左根右语法树p129
后缀式 左右跟
杂题
脚本语言不是通用的程序设计语言。他主要采用解释方式实现.便于移植p146
程序设计语言效率高于脚本语言
题目中有编译都是静态,运行才有动态
**