编译程序和解释程序:解释器翻译源程序不生成目标程序,参与程序的运行过程。编译器翻译源程序生成目标程序,不参与程序运行过程。
程序设计语言基本成分:基本程序结构有顺序、选择、循环这三种。数据必须具有类型的作用:1、便于给数据合理分配内存单元;2、对参与表达式运算的数据进行检查;3、规定数据对象的取值范围以及能够进行的运算
关于逻辑布尔表达式,尤其是短路运算的判断题。与逻辑左边是否有0,或逻辑看左边是否有1
函数调用值传递和引用传递:值传递调用,实际上内存中开了个新的栈区,同名变量在不同的栈区中是不一样的两个变量,函数栈消失后,原本的变量还是原来的值。引用传递则是传递一个旧变量地址到新栈区,相当于传指针,函数栈内操作也会影响到原变量。
值传递情况下,实参将变量值给形参,形参类型与实参相同。引用传递情况,将实参地址给形参,形参相当于指向实参的指针,所以实参必须有地址。
编译、解释程序的翻译各阶段:1词法分析、2语法分析、3语义分析、4中间代码生成、5代码优化、6目标代码生成。前1、2、3阶段不可省略且阶段不可交换,后4、5阶段可以省略,即进行完1、2、3步后就可以生成目标代码
词法分析输入是源程序,输出是记号流。分析构成程序的字符以及字符按照构造规则构成的符号是否符合规定
语法分析输入记号流,输出语法树。语法分析使用语法树对程序进行语法检测,可以发现程序中所有语法错误。比如括号不匹配,语句结构错误等
语义分析输入语法树,可发现静态语义错误,比如数据类型不匹配、变量值是否正确。动态语义错误只有运行时才能发现。
中间代码生成与具体机器无关,可以跨平台。常见中间代码有后缀式、三地址码、三元式、四元式和树(图)
目标代码生成阶段与具体机器密切相关,寄存器的分配工作就在这个阶段进行
正规式:类似集合和多项式的结合体,主要靠做题领会经验,用举反例排除选项。
有限自动机:有限自动机是词法分析的一个工具,能正确识别正规集,分为确定的有限自动机和不确定的有限自动机。状态转移到终态才能终止。技巧主要在做题中,靠做题领会经验,多举反例
上下文无关文法:树状分支替换,等效代换思维
中缀、后缀转换:跟中缀树和后缀树可相互转换一样。多打括号就行