㈠ 编译原理中的词法分析器的输入与输出是什么
编译原理中的词法分析器的输入是源程序,输出是识别的记号流。
词法分析器编制一个读单词的程序,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符和分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)。
(1)编译器识别单词扩展阅读
词法分析器的作用:
1、与符号表进行交互,存储和读取符号表中的标识符的信息。
2、读入源程序的输入字符,将他们组成词素,生成并输出一个词法单元序列,每个词法单元序列对应一个于一个词素。
3、过滤掉程序中的注释和空白。
4、将编译器生成的错误消息与源程序的位置联系起。
㈡ 缂栬疟绋嫔簭宸ヤ綔杩囩▼
缂栬疟绋嫔簭镄勫伐浣滆繃绋嬫秹鍙婃簮绋嫔簭镄勫垎鏋愬拰鐩镙囩▼搴忕殑鐢熸垚銆傞栧厛锛岀▼搴忎细杩涜屾簮浠g爜镄勬镆ワ纴灏嗗叾鍒呜В涓哄熀链鎴愬垎锛屽傛爣璇嗙︺佺被鍨嫔拰杩愮畻绗︾瓑銆傚湪杩欎釜阒舵碉纴缂栬疟鍣ㄤ细镞呯己鍒涘窞阌寤虹﹀彿琛锛屽瓨鍌ㄦ簮绋嫔簭涓镄勬爣璇嗙﹀强鍏跺睘镐э纴濡傚彉閲忋佹暟缁勚佺粨鏋勭瓑镄勭岖被鍜岀被鍨嬶纴浠ュ强鐩镙囩▼搴忔墍闇镄勯濆栦俊鎭鍐岄晣宸с傚父鏁拌〃鍒栾板綍婧愮▼搴忎腑镄勫父鏁板强鍏跺湪鐩镙囩▼搴忎腑镄勫瓨鍌ㄤ綅缃銆
鎺ヤ笅𨱒ワ纴缂栬疟绋嫔簭浼氩皢婧愪唬镰佽浆鎹涓轰竴绉崭腑闂磋瑷褰㈠纺锛屽傛尝鍏拌〃绀恒佷笁鍏幂粍鎴栧洓鍏幂粍锛屼互渚夸簬钖庣画镄勫垎鏋愬拰缁煎悎镎崭綔銆傝繖涓阒舵典娇鐢ㄧ殑鏁版嵁缁撴瀯涓昏佸寘𨰾绗﹀彿琛ㄣ佸父鏁拌〃鍜屼腑闂磋瑷绋嫔簭銆
鍒嗘瀽阒舵靛垎涓鸿瘝娉曞垎鏋愩佽娉曞垎鏋愬拰璇涔夊垎鏋愪笁涓姝ラゃ傝瘝娉曞垎鏋愬櫒锛屾垨绉颁负镓鎻忓櫒锛岃礋璐h瘑鍒婧愪唬镰佷腑镄勫崟璇嶏纴鏋勯犵﹀彿琛ㄥ拰甯告暟琛锛屽苟灏嗘簮浠g爜杞鎹涓虹紪璇戝櫒鑳藉勭悊镄勫唴閮ㄥ舰寮忋傝娉曞垎鏋愬櫒鏄鍏抽敭鐜鑺傦纴瀹冩牴鎹璇瑷瑙勫垯妫镆ヤ唬镰佺殑璇娉曟g‘镐э纴鐢熸垚涓闂磋瑷镄勭粨鏋勚傝涔夊垎鏋愬櫒鍒欑‘淇濈▼搴忕殑璇涔夋g‘锛岄獙璇佹爣璇嗙﹀拰甯告暟镄勪娇鐢锛屽苟鏀堕泦鐩稿叧淇℃伅锛岃繘琛岀浉搴旂殑璇涔夊勭悊銆
镐荤殑𨱒ヨ达纴缂栬疟绋嫔簭阃氲繃涓绯诲垪澶嶆潅镄勮繃绋嬶纴浠庢簮绋嫔簭鍑哄彂锛岄氲繃绗﹀彿琛ㄥ拰涓闂磋瑷锛屾渶缁堢敓鎴愮洰镙囩▼搴忥纴纭淇濈▼搴忕殑姝g‘镐у拰鍙镓ц屾с
㈢ 编译器做什么工作
1. 词法分析 词法分析器根据词法规则识别出源程序中的各个记号(token),每个记号代表一类单词(lexeme)。源程序中常见的记号可以归为几大类:关键字、标识符、字面量和特殊符号。词法分析器的输入是源程序,输出是识别的记号流。词法分析器的任务是把源文件的字符流转换成记号流。本质上它查看连续的字符然后把它们识别为“单词”。 2. 语法分析 语法分析器根据语法规则识别出记号流中的结构(短语、句子),并构造一棵能够正确反映该结构的语法树。 3. 语义分析 语义分析器根据语义规则对语法树中的语法单元进行静态语义检查,如果类型检查和转换等,其目的在于保证语法正确的结构在语义上也是合法的。 4. 中间代码生成 中间代码生成器根据语义分析器的输出生成中间代码。中间代码可以有若干种形式,它们的共同特征是与具体机器无关。最常用的一种中间代码是三地址码,它的一种实现方式是四元式。三地址码的优点是便于阅读、便于优化。 5. 中间代码优化 优化是编译器的一个重要组成部分,由于编译器将源程序翻译成中间代码的工作是机械的、按固定模式进行的,因此,生成的中间代码往往在时间和空间上有很大浪费。当需要生成高效目标代码时,就必须进行优化。 6. 目标代码生成 目标代码生成是编译器的最后一个阶段。在生成目标代码时要考虑以下几个问题:计算机的系统结构、指令系统、寄存器的分配以及内存的组织等。编译器生成的目标程序代码可以有多种形式:汇编语言、可重定位二进制代码、内存形式。 7 符号表管理 符号表的作用是记录源程序中符号的必要信息,并加以合理组织,从而在编译器的各个阶段能对它们进行快速、准确的查找和操作。符号表中的某些内容甚至要保留到程序的运行阶段。 8 出错处理用户编写的源程序中往往会有一些错误,可分为静态错误和动态错误两类。所谓动态错误,是指源程序中的逻辑错误,它们发生在程序运行的时候,也被称作动态语义错误,如变量取值为零时作为除数,数组元素引用时下标出界等。静态错误又可分为语法错误和静态语义错误。语法错误是指有关语言结构上的错误,如单词拼写错、表达式中缺少操作数、begin和end不匹配等。静态语义错误是指分析源程序时可以发现的语言意义上的错误,如加法的两个操作数中一个是整型变量名,而另一个是数组名等。
㈣ 编译原理中的词法分析器的输入与输出是什么
编译原理中的词法分析器的输入是源程序,输出是识别的记号流。
词法分析器编制一个读单词的程序,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符和分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“Error”,然后跳过错误部分继续显示)。
(4)编译器识别单词扩展阅读
词法分析器的作用:
1、与符号表进行交互,存储和读取符号表中的标识符的信息。
2、读入源程序的输入字符,将他们组成词素,生成并输出一个词法单元序列,每个词法单元序列对应一个于一个词素。
3、过滤掉程序中的注释和空白。
4、将编译器生成的错误消息与源程序的位置联系起。