- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
开篇编译,简单的说,就是把源程序转换为可执行程序。从hello world 说程序运行机制?里面简单的说明了程序运行的过程,以及一个程序是如何一步步变成可执行文件的。在这个过程中,编译器做了很多重要的工作。对底层该兴趣的我,自然的,也就迫切想搞清楚编译的内部实现,也就是编译的原理。这篇文章主要说的是编译器前端,词法分析器的原理,最后会给出一个词法分析器的简单实现。?介绍?编译简单的说,就是把源程序转化为另一种形式的程序,而其中关键的部分就是理解源程序所要表达的意思,才能转化为另一种源程序。可以用一个比喻来说明问题:人A和人B想要交谈,但是他们都不知道彼此的语言,这就需要一个翻译C,同时懂得A和B的语言。有了C做中间层,A和B才能正常交流。C的作用就有点像编译器,它必须能理解源程序所要表达的意思,才能把信息传递给另一个。编译器也一样,它的输入是语言的源文件(一般可以是文本文件)对于输入的文件,首先要分离出这个输入文件的每个元素(关键字、变量、符号、、)然后根据语言的文法,分析这些元素的组合是否合法,以及这些组合所表达的意思。程序设计语言和自然语言不一样,都是用符号来描述,每个特定的符号表示特定的意思,而且程序设计语言是上下文无关的。上下文无关就是某一个特定语句所要表达的意思和它所处的上下文没有关系,只有它自身决定。这篇博文主要说的就是词法分析,也就是把输入的符号串整理成特定的词素。词法分析定义:词法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等(1) 关键字是由程序语言定义的具有固定意义的标识符。例如,Pascal 中的begin,end,if,while都是保留字。这些字通常不用作一般标识符。(2) 标识符用来表示各种名字,如变量名,数组名,过程名等等。(3) 常数? 常数的类型一般有整型、实型、布尔型、文字型等。(4) 运算符如+、-、*、/等等。(5) 界符? 如逗号、分号、括号、等等。输出:词法分析器所输出单词符号常常表示成如下的二元式:???????????????? (单词种别,单词符号的属性值)单词种别通常用整数编码。标识符一般统归为一种。常数则宜按类型(整、实、布尔等)分种。关键字可将其全体视为一种。运算符可采用一符一种的方法。界符一般用一符一种的方法。对于每个单词符号,除了给出了种别编码之外,还应给出有关单词符号的属性信息。单词符号的属性是指单词符号的特性或特征。示例:比如如下的代码段:while(i=j) i--经词法分析器处理后,它将被转为如下的单词符号序列:?? while, _?? (, _?? id, 指向i的符号表项的指针?? =, _?? id, 指向j的符号表项的指针?? ), _?? id, 指向i的符号表项的指针?? --, _?? ;, _?词法分析分析器作为一个独立子程序词法分析是编译过程中的一个阶段,在语法分析前进行。词法分析作为一遍,可以简化设计,改进编译效率,增加编译系统的可移植性。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。词法分析器设计输入、预处理词法分析器工作的第一步是输入源程序文本。在许多情况下,为了更好地对单词符号识别,把输入串预处理一下。预处理主要滤掉空格,跳过注释、换行符等。超前有哪些信誉好的足球投注网站词法分析过程中,有时为了确定词性,需超前扫描若干个字符。对于FORTRAN 语言,关键字不作为保留字,可作为标识符使用,空格符号没有任何意义。为了确定词性,需超前扫描若干个字符。在FORTRAN中???????? 1?? DO99K=1,10???????? 2?? IF(5.EQ.M) I=10???????? 3?? DO99K=1.10???????? 4?? IF(5)=55这四个语句都是正确的语句。语句1和2 分别是DO和IF语句,语句3和4是赋值语句。为了正确区别1和3,2和4语句,需超前扫描若干个字符。? ? ? ? ? ?1?? DO99K=1,10????????? 2?? IF(5.EQ.M) I=10?????????? 3?? DO99K=1.10????????? 4?? IF(5)=55语句1和3的区别在于符号之后的第一个界符:一个为逗号,另一个为句末符。语句2和4的主要区别在于右括号后的第一个字符:一个为字母,另一个为等号。为了识别1、2中的关键字,必须超前扫描多个字符。超前到能够肯定词性的地方为止。为了区别1和3,必须超前扫描到等号后的第一个界符处。对于语句2、4来说,必须超前扫描到与IF后的左括号相对应的那个右括号之后的第一个字符为止。状态转换图词法分析器使用状态转换图来识别单词符号。状态转换图是一张有限方向图。在状态
有哪些信誉好的足球投注网站
文档评论(0)