编译器设计和实现.ppt

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译器设计和实现

编译器设计与实现;一、概述;2、编译器各阶段的分组;二、符号表;1、符号的表示;1、符号的表示;2、符号表的表示;;*;4、符号表的相关操作;三、代码生成接口;1、类型度量;2、接口记录;3、dag操作;3、dag操作;*;*;3、dag操作;4、接口标志;5、函数;6、上行调用;四、词法分析;1、输入;2、单词识别;emun{ #define xx(a,b,c,d,e,f,g) a=b, #define yy(a,b,c,d,e,f,g) #include “token.h” LAST } token.h文件: yy(0, 0, 0, 0, 0, 0, 0) xx(FLOAT, 1, 0, 0, 0, CHAR, float) xx(DOUBLE, 2, 0, 0, 0, CHAR, double) xx(CHAR, 3, 0, 0, 0, CHAR, char) xx(SHORT, 4, 0, 0, 0, CHAR, short) xx(INT, 5, 0, 0, 0, CHAR, int) xx(UNSIGNED, 6, 0, 0, 0, CHAR, unsigned) xx(POINTER, 7, 0, 0, 0, 0, pointer) xx(VOID, 8, 0, 0, 0, CHAR, void) xx(STRUCT, 9, 0, 0, 0, CHAR, struct) … …;3、关键字的识别;4、标识符识别;5、其他;五、语法分析;1、表达式;表达式的分析: 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()} ;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 };条件表达式: 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]

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档