资源简介
用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++简单钢琴入门级别
- 猫脸变换算法(Arnold)的简单实现C
- MFC简单指示灯的实现
- 可视化编程简单计算器用C++编程 课程
- C语言实现一个编译器-编译原理南开大
- 编译原理课程实验报告词法分析器及
- UDP简单文件传输
- 简单的VC++基于MFC计算器
- 简单实现凯撒密码的c++代码
- 基于MFC简单的学生信息管理系统ODBC
-
MFC写的MediaPla
yer播放器简单 - 简单菜单系统C语言版
- MFC编写一个简单的登录对话框(连数
- 编译原理与技术李文生:LR分析法C+
- 基于MFC的简单网络聊天室
- PL0编译器词法检查与语法分析器
- vc6.0的MFC实现简单的俄罗斯方块小游戏
- MFC简单通讯录制作
- 一个简单的摄像机定标与立体匹配测
- mfc酒店管理系统C++编写,程序简单,
-
最简单的c++ xm
l类,跨平台使用 - MFC画直线及简单图形
- 基于QT的简单文本编辑器
- C语言简化编译器前端 编译原理 LR1
- c++写的一个简单的银行管理系统
- C-Minus编译器 编译原理实验
- winsocket编程实现简单 server端和client端
- C++编写dll和使用dll(最简单的vs2010)
- 工业组态软件VC++简单实现
- 利用MFC编写一个简单的带界面的数据
评论
共有 条评论