赞
踩
解释器:
翻译源程序时不生成独立的目标程序
解释程序和源程序要参与到程序的运行过程中编译器:
翻译时将源程序翻译成独立保存的目标程序机器上运行的是与源程序等价的目标程序,
源程序和编译程序都不再参与目标程序的运行过程
传值调用:
将实参的值传递给形参,实参可以是变量、常量和表达式。不可以实现形参和实参间双向传递数据的效果
传引用(地址)调用:
将实参的地址传递给形参,形参必须有地址,实参不能是常量(值),表达式。
可以实现形参和实参间双向传递数据的效果,即改变形参的值同时也改变了实参的值。
因为传的是地址所以s变了a也变了
编译方式:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成解释方式:词法分析、语法分析、语义分析。
编译器和解释器都不可省略词法分析、语法分析、语义分析且顺序不可交换即词法分析、语法分析、语义分析是必须的。
编译器方式中中间代码生成和代码优化不是必要,可省略。
即编译器方式可以在词法分析、语法分析、语义分析阶段后直接生成目标代码。
不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中记录源程序中各个字符的必要信息,以辅助语义的正确性检查和代码生成。
源程序可以简单地被看成是一个多行的字符串。词法分析阶段是编译过程的第一个阶段,这个阶段的任务是对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个“单词”符号。“单词”符号是程序设计语言的基本语法单位,如关键字(或称保留字)、标识符、常数、运算符和分隔符(如标点符号、左右括号)等。
语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”“语句”和“程序”等。语法规则就是各类语法单位的构成规则。通过语法分析确定整个输入串是否构成一个语法上正确的程序。如果源程序中没有语法错误,语法分析后就能正确地构造出其语法树;否则指出语法错误,并给出相应的诊断信息。
语义分析阶段分析各语法结构的含义,检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。只有语法和语义都正确的源程序才能翻译成正确的目标代码。
语义分析的一个主要工作是进行类型分析和检查。程序设计语言中的一个数据类型一般包含两个方面的内容:类型的载体及其上的运算。例如,整除取余运算符只能对整型数据进行运算,若其运算对象中有浮点数就认为是类型不匹配的错误。
常见的中间代码有:后缀式、三地址码、三元式、四元式和树(图)等形式。中间代码与具体的机器无关(不依赖具体的机器),
可以将不同的高级程序语言翻译成同一种中间代码。中间代码可以跨平台。
因为与具体的机器无关,使用中间代码有利于进行与机器无关的优化处理和提高编译程序的可移植性。
有限自动机是词法分析的一个工具,它能正确地识别正规集
确定的有限自动机(DFA):对每一个状态来说识别字符后转移的状态是唯一的
不确定的有限自动机(NFA):对每一个状态来说识别字符后转移的状态是不唯一的
箭头上的字符代表条件 单个圆圈加不确定来源箭头代表开头 双圆圈代表终点 终点与开头可以重合
1、必须0结尾排除AD 2、BC的特点是C结尾只能是10,全是0也行 所以选B
后缀转中缀就像栈一样 将字符一个一个放进去 然后遇见计算符号拿出计算符前两个进行计算·再把值放进去 ,重复
后序遍历
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。