- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4、标识符识别 case h: case j: case k: case m: case n: case o: case p: case q: case x: case y: case z: case A: case B: case C: case D: case E: case F: case G: case H: case I: case J: case K: case M: case N: case O: case P: case Q: case R: case S: case T: case U: case V: case W: case X: case Y: case Z: id: if (limit - rcp MAXLINE) { cp = rcp - 1; fillbuf(); rcp = ++cp; } assert(cp == rcp); token = (char *)rcp - 1; while (map[*rcp](DIGIT|LETTER)) rcp++; token = stringn(token, (char *)rcp - token); tsym = lookup(token, identifiers); cp = rcp; return ID; 检查是否需要填充buffer 5、其他 另外还有: 数字识别 字符常量和字符串识别 都是有gettok函数实现,实现方法相似。 词法分析器可以有象LEX这样的工具实现。Lcc手工实现了词法分析器,体积更小。 五、语法分析 根据语言的文法分析,以确认输入是否符合语言规则,并建立输入源程序的内部表示。 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 表达式的分析: 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(‘)’) ; } } 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: bi
您可能关注的文档
最近下载
- 《家用医疗器械租赁服务规范》.pdf VIP
- 重庆市渝北区2024年七年级上学期数学期末试卷附答案.pptx VIP
- 力学实验(解析版)-2025版高三物理寒假讲义.pdf VIP
- 肘关节运动学.pptx VIP
- 2025年生活会个人对照检视发言材料【四个带头+违纪行为典型案例解析】与个人检查材料2篇文.docx VIP
- 家用医疗器械租赁服务规范.docx VIP
- 锂离子电池和电池组生产安全要求SJT 11798-2022.docx VIP
- 专业技术职务任职资格评审表 - 专业技术职务任职资格评审表.doc
- 2024-2025学年深圳市南山区四上数学期末试卷及答案.pdf
- 2022-2023学年辽宁省沈阳126中七年级下学期期中数学试卷(含答案解析).docx
文档评论(0)