c-编译器设计文档

c-编译器设计文档

ID:13731772

大小:78.50 KB

页数:10页

时间:2018-07-24

c-编译器设计文档_第1页
c-编译器设计文档_第2页
c-编译器设计文档_第3页
c-编译器设计文档_第4页
c-编译器设计文档_第5页
资源描述:

《c-编译器设计文档》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、C-编译器设计文档CS01063011112192陆晓春C-编译器设计文档CS01063011112192陆晓春-10-C-编译器设计文档CS01063011112192陆晓春目录Ø整体框架…………………………………………………………………………………….3Ø词法分析…………………………………………………………………………………….3üClassCTokenizer……………………………………………………………………3üClassCScaner………………………………………………………………………..3üC关键字表……………………………………………………………………………..4ü标识符词法

2、……………………………………………………………………………..4Ø语法分析……………………………………………………………………………………..5üClassCParser………………………………………………………………………..5üGrammar……………………………………………………………………………..5ü基本树形结构..……………………………………………………………………….6ü支持的语句及运算..………………………………………………………………….7Ø建立符号表………………………………………………………………………………….7üClassLineListRec……………………………

3、……………………………………..7üClassBucketListRec……………………………………………………………….7üClassCSymbolTable……………………………………………………………….8üClassCFunArgsCheck……………………………………………………………..8Ø类型检测……………………………………………………………………………………8üClassCAnalyzer..…………………………………………………………………..8ü类型匹配………………………………………………………………………………8ü函数调用参数检测…………………………………………………

4、…………………8Ø代码生成……………………………………………………………………………………8üPCode…………………………………………………………………………………8ü80X86ASM………………………………………………………………….……….9Ø总结…………………………………………………………………………………………9-10-C-编译器设计文档CS01063011112192陆晓春Ø整体框架:输入文件开始词法分析语法分析建立符号表类型检查代码生成结束语法树符号表Ø词法分析:包括两个类:üClassCTokenizer:从一个字符串中(这个把一个文件看作是一个字符串,MFC中CFile-

5、>CString)分离出一个一个token,配上简单的类型通过NextToken()返回:#defineTT_EOL''#defineTT_EOF-1#defineTT_INTEGER-2#defineTT_REAL-3#defineTT_WORD-4#defineTT_STRING'"'#defineTT_CHAR'''üClassCScaner:得到具体的的token类型,定义TokenType如下:enumTokenType-10-C-编译器设计文档CS01063011112192陆晓春{//reservedKeyword_AUTO,_DOUBLE,_INT,_STRUCT,_

6、BREAK,_ELSE,_LONG,_SWITCH,_CASE,_ENUM,_REGISTER,_TYPEDEF,_CHAR,_EXTERN,_RETURN,_UNION,_CONST,_FLOAT,_SHORT,_UNSIGNED,_CONTINUE,_FOR,_SIGNED,_VOID,_DEFAULT,_GOTO,_SIZEOF,_VOLATILE,_DO,_IF,_STATIC,_WHILE,_READ,_WRITE,_PRINTF,//operationsASSIGN,PLUS,MINUS,TIMES,DIV,MOD,BITWISE_AND,BITWISE_OR,BITWISE_

7、NOT,LOGICAL_NOT,LT,GT,//interpunctionsLPARAN,RPARAN,LBRACE,RBRACE,LSQUARE,RSQUARE,COMMA,DOT,SEMI,COLON,//complexoperationsEQ/*==*/,NEQ/*!=*/,PLUS_PLUS/*++*/,MINUS_MINUS/*--*/,PLUS_ASSIGN/*+=*/,MINUS_ASSIGN/*-=*/,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。