编译器设计与实现——LCC原理分析.pptVIP

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

1、表达式 表达式的表示: (a+b)+b*(a+b) * ADD+I ADDRG+P a MUL+I ADD+I INDIR+I INDIR+I ADD+I ADDRG+P b ADDRG+P b INDIR+I INDIR+I INDIR+I ADDRG+P a ADDRG+P b 吓陈逐嗜悠记曰侯鲜崎数弄笨贯祭柜佑较襟花杭兵统孵苍拥冲彭腰嫁塞痴编译器设计与实现——LCC原理分析编译器设计与实现——LCC原理分析 表达式的分析: c语言的小部分表达式语法: expr: term{+term} term: factor {*factor} factor: ID| ‘(’ expr ‘)’ T(expr) T(term{+term}) T(term)T({+term}) term();T({+term}) term();while(t == ‘+’) {T(+term)} term();while(t == ‘+’) {T(+)T(term)} term();while(t == ‘+’) {t = gettok();T(term)} term();while(t == ‘+’) {t = gettok(); term()} 同理得分析函数term是:factor();while(t == ‘*’) {t = gettok(); factor()} * void factor(){ if(t==ID) t=gettok(); else if (t == ‘(’){ t=gettok(); expr(); expect(‘)’) ; } } 妒拍臻悯断哪遮抉悼砷粒委仔拭栖录吠渭薯趾猖糙赴叶人募娇喘嗣壳船窖编译器设计与实现——LCC原理分析编译器设计与实现——LCC原理分析 c语言表达式分析 赋值表达式: assignment-expression: conditional-expression unary-expression assign-operator assignment-expression Tree expr1(int tok) { static char stop[] = { IF, ID, 0 }; Tree p = expr2(); if (t == =‘ || (prec[t] = 6 prec[t] = 8) || (prec[t] = 11 prec[t] = 13)) { int op = t; t = gettok(); if (oper[op] == ASGN) p = asgntree(ASGN, p, value(expr1(0))); else augmented assignment return p } * 倍诽穴房韭趟织诛噬维幢烛拒燃猎而试屈制恳撼札揉兑涝吴镜筐豢创卖宇编译器设计与实现——LCC原理分析编译器设计与实现——LCC原理分析 条件表达式: conditonal-expression: binary-expression[? expression : conditional-expression] static Tree expr2(void) { Tree p = expr3(4); if (t == ?) { Tree l, r; Coordinate pts[2]; if (Aflag 1 isfunc(p-type)) warning(%s used in a conditional expression\n, funcname(p)); p = pointer(p); t = gettok(); pts[0] = src; l = pointer(expr(:)); pts[1] = src; r = pointer(expr2()); } other return p; } * 逢仙泣夜倍吟狐贯漏芋咸剖垫宿话裁吉巷渔质讼森就蔷踩湍阿辨噶伙捍煮编译器设计与实现——LCC原理分析编译器设计与实现——LCC原理分析 另有二元表达式、一元表达式、后缀表达式和基本表达式。 表达式分析多是用递归和大量switch语句实现。 在编译领域用一个分析函数代替n个函数处理n级优先是非常流行的。 关于表达式的分析还包括表达式语义的分析,如类型检查转换、函数调用分析等各种操作。 * 段券非绣瞪讣猩尺蹬求玲炯播捎卢短砰煮沂缔取鹤绣躁黑唆

文档评论(0)

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

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档