资源简介
用c++实现的一个简单的编译器,可以由一段程序经过词法语法语义分析产生类似于汇编的中间代码。

代码片段和文件信息
// SemanticAnalyse.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
using namespace std;
//**************************************语法分析***********************************************
//定义树节点
typedef struct node
{
string name;
int type;
int subid;
struct node * child;
struct node * next;
} NODE;
NODE * root;
stack NodeStack;
stack StringStack; //字符串栈记录符号
stack TempStack;
map FinishSymbol; //终结符
map nonfinishSymbol; //非终结符
vector AnalysisTable[18][18]; //存储预测分析表
vector > Token; //存储Token序列
vector grammar[24]; //文法字符串
void Initialize(); //初始化预测分析表
string GetWord(FILE* fpint* flag); //从回车和空格之间读出一个单词
string FindWord(string strint* id);
void SaveTokenTo(FILE* fp); //读取文件中的token到内存中
void CreateTree();
//初始化预测分析表
void Initialize()
{
//初始化root
root = new NODE();
root->name = “P“;
root->subid = nonfinishSymbol[“P“];
root->type = 0;
root->next = NULL;
//初始化终结符
FinishSymbol.insert(pair(“id“0));
FinishSymbol.insert(pair(“num“1));
FinishSymbol.insert(pair(“(“2));
FinishSymbol.insert(pair(“)“3));
FinishSymbol.insert(pair(“{“4));
FinishSymbol.insert(pair(“}“5));
FinishSymbol.insert(pair(“;“6));
FinishSymbol.insert(pair(“if“7));
FinishSymbol.insert(pair(“else“8));
FinishSymbol.insert(pair(“while“9));
FinishSymbol.insert(pair(“!“10));
FinishSymbol.insert(pair(“=“11));
FinishSymbol.insert(pair(“int“12));
FinishSymbol.insert(pair(“relop“13));
FinishSymbol.insert(pair(“addop“14));
FinishSymbol.insert(pair(“mulop“15));
FinishSymbol.insert(pair(“#“16));
//初始化非终结符
nonfinishSymbol.insert(pair(“Program“0));
nonfinishSymbol.insert(pair(“Slist“1));
nonfinishSymbol.insert(pair(“Dlist“2));
nonfinishSymbol.insert(pair(“Dtemp“3));
nonfinishSymbol.insert(pair(“D“4));
nonfinishSymbol.insert(pair(“type“5));
nonfinishSymbol.insert(pair(“Olist“6));
nonfinishSymbol.insert(pair(“Otemp“7));
nonfinishSymbol.insert(pair(“O“8));
nonfinishSymbol.insert(pair(“iftemp“9));
nonfinishSymbol.insert(pair(“ex“10));
nonfinishSymbol.insert(pair(“ex_temp“11));
nonfinishSymbol.insert(pair(“sim_ex“12));
nonfinishSymbol.insert(pair(“sim_ex_temp“13));
nonfinishSymbol.insert(pair(“term“14));
nonfinishSymbol.insert(pair(“termtemp“15));
nonfinishSymbol.insert(pair(“factor“16))
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 225280 2008-12-31 19:58 SemanticAnalyse\debug\SemanticAnalyse.exe
文件 767944 2008-12-31 19:58 SemanticAnalyse\debug\SemanticAnalyse.ilk
文件 2214912 2008-12-31 19:58 SemanticAnalyse\debug\SemanticAnalyse.pdb
文件 364 2008-12-31 19:56 SemanticAnalyse\SemanticAnalyse\aaa.txt
文件 215 2008-11-30 21:57 SemanticAnalyse\SemanticAnalyse\aaa.txt.bak
文件 8044 2008-12-31 19:58 SemanticAnalyse\SemanticAnalyse\Debug\BuildLog.htm
文件 67 2008-12-31 19:58 SemanticAnalyse\SemanticAnalyse\Debug\mt.dep
文件 403 2008-12-28 20:36 SemanticAnalyse\SemanticAnalyse\Debug\SemanticAnalyse.exe.em
文件 468 2008-12-28 20:36 SemanticAnalyse\SemanticAnalyse\Debug\SemanticAnalyse.exe.em
文件 385 2008-12-31 19:58 SemanticAnalyse\SemanticAnalyse\Debug\SemanticAnalyse.exe.intermediate.manifest
文件 1045235 2008-12-31 19:58 SemanticAnalyse\SemanticAnalyse\Debug\SemanticAnalyse.obj
文件 8388608 2008-12-29 12:16 SemanticAnalyse\SemanticAnalyse\Debug\SemanticAnalyse.pch
文件 35030 2008-12-29 12:16 SemanticAnalyse\SemanticAnalyse\Debug\stdafx.obj
文件 281600 2008-12-31 19:58 SemanticAnalyse\SemanticAnalyse\Debug\vc80.idb
文件 372736 2008-12-31 19:58 SemanticAnalyse\SemanticAnalyse\Debug\vc80.pdb
文件 332 2009-04-06 21:02 SemanticAnalyse\SemanticAnalyse\output.txt
文件 998 2008-12-28 20:36 SemanticAnalyse\SemanticAnalyse\ReadMe.txt
文件 24369 2008-12-31 19:58 SemanticAnalyse\SemanticAnalyse\SemanticAnalyse.cpp
文件 4511 2008-12-28 20:36 SemanticAnalyse\SemanticAnalyse\SemanticAnalyse.vcproj
文件 1427 2009-04-06 21:02 SemanticAnalyse\SemanticAnalyse\SemanticAnalyse.vcproj.PC-200810202201.Administrator.user
文件 1411 2008-12-29 17:10 SemanticAnalyse\SemanticAnalyse\SemanticAnalyse.vcproj.soft093.soft.user
文件 358 2008-12-21 20:27 SemanticAnalyse\SemanticAnalyse\source.txt
文件 220 2008-12-28 20:36 SemanticAnalyse\SemanticAnalyse\stdafx.cpp
文件 488 2008-12-29 12:16 SemanticAnalyse\SemanticAnalyse\stdafx.h
文件 1805312 2009-04-06 21:02 SemanticAnalyse\SemanticAnalyse.ncb
文件 910 2008-12-28 20:36 SemanticAnalyse\SemanticAnalyse.sln
..A..H. 18432 2009-04-06 21:02 SemanticAnalyse\SemanticAnalyse.suo
目录 0 2008-12-31 19:58 SemanticAnalyse\SemanticAnalyse\Debug
目录 0 2008-12-31 19:58 SemanticAnalyse\debug
目录 0 2008-12-31 19:58 SemanticAnalyse\SemanticAnalyse
............此处省略4个文件信息
相关资源
- 简单的C语言点对点聊天程序
- 编译原理c语言编译器
- 编译原理实验-词法分析(c语言代码)
- modbus tcp/ip 简单通讯
- 图形学简单绘图系统
- 北邮-编译原理-词法分析
- 简单员工管理系统(适合初学MFC)
- 简单职工管理系统(控制台源码+txt数
- C语言编译器的设计与实现.doc
- 扫雷游戏.cpp(较简单)
- 一个简单而强大的基于MFC的web server源
- 现代编译原理-C语言描述
- MFC自定义界面HUI,高效简单,含详细
- tiny+编译器C++实现
- 简单通讯录C语言实现
- 编译原理实验报告+代码+使用说明
- 编译原理课程设计-C语言子集编译器
- 一个C语言编译器源码
- C++简单计算器的实现
- 可以将C语言转变为汇编的编译器
- C++简单实现用户管理系统
- 赋值语句翻译c语言实现四元式
- 编译原理用C++消除左递归
- LL1语义分析的C语言子集编译器
- 编译原理简易C编译器
- 实现语法分析器-编译原理
- plo编译器 c语言 含测试 以及实验报告
- 编译原理 LR分析器 c++代码
- 设计并实现TINYC语言的扫描程序TINYC
- LL(1)文法分析全过程(FIRST/FLLOW/S
评论
共有 条评论