⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 开发文档.txt

📁 用C写的简易C编译器
💻 TXT
字号:
		simple C compiler开发文档
			09002212	
		       	陈曦


本编译器可支持对.crr文件的C的子集代码的编译及汇编代码生成。
本编译器以命令行的形式运行,在程序目录下运行即可。形式为:
pas1 (目标文件名).crr

本编译器识别的字符:
保留字:
int,main,import,out;
运算符号:
+、-、*、/、%
关系符号:
=、〈、〉、&&、||、(、)、
语句符号:
;、{、}、#

本编译器文法:

1: D->@()S.  程序->主函数
2: S->@=E;. 赋值语句
3: S->{W}.  组合语句
4: S->i(G)S. if语句
5: S->i(G)SeS. if-else语句
6: S->w(G)S. while语句
7: S->zL;.  变量定义
8: S->@(E);. 函数调用
9: W->WS.  多条语句列表
10: W->S.  语句列表
11: L->@.  变量名列表
12: L->L,@.  多个变量名列表
13: G->G&M.  逻辑表达式
14: G->M.
15: M->E>E.  关系表达式
16: M->!M.  逻辑非表达式
17: M->(G).  带括号的逻辑表达式
18: E->E+T.  加法表达式
19: E->T.
20: T->T*F.  乘法表达式
21: T->F.
22: F->(E).  带括号的算术表达式
23: F->@.  变量表达式
24: F->n.   数字表达式

Compiler::preProcess():程序预处理
	检验所要编译的文件是否存在,检验是否需要引入系统函数'System.out'

Symbol *Compiler::lexer():词法分析器
	对输入的字符串进行分析,利用FA分析是否为合法字符串及是否为保留字,生成符号表symbolList

Compiler::parser():语法分析器
	对创建的符号表symbolList进行分析,以LR分析法按以上文法进行规约,最终规约到D。以检验语法是否正确。

Compiler::nextChar():预测分析符

Compiler::lookup(string m):查找字符串
	检验字符串是否存在,以检验变量是否以被定义过

Compiler::emitter():目标代码生成
	按符号表symbolList创建.asm文件生成目标代码(汇编代码)

Compiler::optimize():目标代码优化
	去除简单的连续出现的'push ax    pop ax'类的垃圾代码,简化代码

Compiler::err(int no,int line):错误信息提示
	按照分析时发现的错误号no提示错误类型,按出错行数line提示错误地点

Action::Action():符号优先级

Goto::Goto():非终结符优先级

本程序已提供a.crr测试文件。






	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -