编译器的设计和实现1.pptVIP

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译器的设计和实现1

编译器的设计与实现;课程描述;一个简单的编译器的设计与实现;1 语言;1.1简单的C 语言的文法;expression→ ID = expression | simple-expression simple-expression→ additive-expression [ relop additive-expression ] relop → | = | | = | == | != additive-expression→ term [( + | - ) term ] term→ factor [ ( * | / ) factor ] factor→ ( expression )| ID | call | NUM call→ ID( args ) args→ expression { , expression } | empty;1.2程序举例;1.3进一步的扩展;2 目标机器建模;2.1 CPU的设计;2.2存储器组织;;2.3目标机器模型;数据结构;2.4指令系统;指令集举例;目标代码数据结构;大纲;3 编译程序的实现;简单回顾-编译的各个阶段;示例源代码;3.1词法分析;单词符号是什么?;如何表示单词符号?;如何表示单词符号?;示例;词法分析器的实现;S;实现代码; case scanState. INID: if(!Char.IsLetter(ch)!Char.IsDigit(ch)) { ungetNextChar(); tokType=TokenType.ID; state=scanState.DONE; } break; case scanState.INNUM: if(!Char.IsDigit(ch)){ ungetNextChar(); tokType=TokenType.NUMBER; state=scanState.DONE; } break; …… } //end_switch str+=ch; //记录当前正在判断的单词符号串 } //end_while Token tok= new Token(); tok.TType = tokType; tok.Str = str; return tok; };3.2语法分析;简单的C 语言的文法;expression→ ID = expression | simple-expression simple-expression→ additive-expression [ relop additive-expression ] relop → | = | | = | == | != additive-expression→ term [( + | - ) term ] term→ factor [ ( * | / ) factor ] factor→ ( expression )| ID | call | NUM call→ ID( args ) args→ expression { , expression } | empty;示例;语句if(ab) a = a-b;的语法分析树;对应的语法分析子程序;语法分析树与抽象语法树;语句if(ab) a = a-b;的抽象语法树;3.3抽象语法树与中间表示;抽象语法树 节点表示;;抽象语法树 节点表示;;;示例;语法分析器的实现;语法树节点设计;语法树节点设计;语法分析器的实现 ;TreeNode var_decl() { TreeNode retnode, nextnode, curnode; retnode = curnode; retnode.NType = curnode.NType = NodeType.VarDecl; While(curtoken.TType!=TokenType.SEMI) { Switch(curtoken.TType) { case TokenType.INT: match(TokenType.INT); break; Case TokenType.ID: nextnode.NodeStr = curtoken.str; //nextnode.IsArray = 0; nextnode.ArraySize = 0; 数组? curnode.Sibling = nextnode; curnode = nextnode; match(TokenType.ID); break; case TokenType.COMMA: match(Toke

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档