资源简介
这是编译原理语义分析程序 c++实现,运用优先表的方法实现,简单,实用

代码片段和文件信息
#include
#include
#include
#include
#include
using namespace std;
/*在输出文件save.txt中,相应数字意义如下
关键字--1
标示符--2
数字--3
界限符--4
运算符--5
错误--0
*/
void alpha(ifstream & infileofstream & outfilechar s);
int punct(ifstream & infileofstream & outfilechar sbool nocout);
void digit(ifstream & infileofstream & outfilechar s);
void cifa();
int cmpoper(string astring b);
int main()
{
cifa();
system(“pause“);
return 0;
}
void cifa()//此法分析子程序
{
ifstream infile;
ofstream outfile;
char s;
infile.open(“biaodashi.txt“);
outfile.open(“save.txt“ofstream::out);
while(!infile.eof())
{
infile.read(&ssizeof(char));
if(infile.eof())break;
while(isspace(s))//是空格就读下一个
infile.read(&ssizeof(char));
if(isalpha(s) || s==‘_‘) alpha(infileoutfiles);//是字母就调用关键字或标识符子程序
else if(isdigit(s)) digit(infileoutfiles);//是数字就调用数字分析子程序
else if(ispunct(s)) punct(infileoutfiles0);//是符号就调用界限符或运算符子程序
else {cout< }
infile.close();
outfile.close();
}
void alpha(ifstream & infileofstream & outfilechar s)
{
char buff[40];
int i=0;
bool label=truenocout=true;
char * key[]={“include““iostream““using““namespace““std““int““main““cout““return“};
int n=9;
while( !isspace(s) )//如果下一个字符不是空格或其他符号就把字母或数字或下划线读入数字储存起来
{
if(punct(infileoutfilesnocout)==0 || punct(infileoutfilesnocout)==1) {infile.seekg(-1ios_base::cur);break;}
if( !((s==‘_‘) || (isalpha(s) ) || (isdigit(s) )) ) label=false;
cout< outfile< buff[i]=s;
i=i+1;
infile.read(&ssizeof(char));
}
if(label==false) {cout<<“ wrongA“< else
{//把读取的字符串与关键字比较,判断其是关键字还是标识符
buff[i]=‘\0‘;
for(i=0;i {
if(strcmp(buffkey[i])==0) {cout<<“ 关键字“< else label=false;
}
if(label==false) {cout<<“ 标识符“< }
}
int punct(ifstream & infileofstream & outfilechar sbool nocout)
{//界限符判断
int in=8;
char bound[]={‘“‘‘{‘ ‘}‘ ‘‘ ‘;‘ ‘<‘ ‘>‘ ‘\‘‘};
for(i=0;i {
if(s==bound[i])
if (nocout) return 0;
else {cout< }
if(i
else if(i==0)
{
infile.read(&ssizeof(char));//若连着两个‘“‘则输出第二个‘“‘后退出本函数
if(s==‘“‘) {cout< else infile.seekg(-1ios_base::cur);
while((!infile.eof()))//判断字符串
{
infile.read(&ssizeof(char));
if(s!=‘“‘) cout< else
{
cout<<“ 字符串“< outfile<<“ 6“< break;
}
}
cout< outfile< }
//运算符判断
int m=9;
char operat[]={ ‘=‘ ‘+‘ ‘-‘ ‘*‘ ‘/‘ ‘#‘ ‘(‘ ‘)‘ ‘.‘};
for(i=0;i {
if(s==operat[i])
if (nocout) return 1;
else {cout< }
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 22 2009-05-20 15:52 taoeryuyi60\biaodashi.txt
文件 201 2009-05-18 10:14 taoeryuyi60\compile.txt
文件 585781 2009-06-15 21:08 taoeryuyi60\Debug\taoeryuyi60.exe
文件 843944 2009-06-15 21:08 taoeryuyi60\Debug\taoeryuyi60.ilk
文件 2547872 2009-06-15 21:08 taoeryuyi60\Debug\taoeryuyi60.pch
文件 1197056 2009-06-15 21:08 taoeryuyi60\Debug\taoeryuyi60.pdb
文件 132096 2009-06-15 21:08 taoeryuyi60\Debug\vc60.idb
文件 118784 2009-06-15 21:08 taoeryuyi60\Debug\vc60.pdb
文件 297266 2009-06-15 21:08 taoeryuyi60\Debug\yuyi.obj
文件 110 2009-06-15 21:08 taoeryuyi60\save.txt
文件 4337 2009-05-20 15:21 taoeryuyi60\taoeryuyi60.dsp
文件 530 2009-05-20 14:45 taoeryuyi60\taoeryuyi60.dsw
文件 50176 2009-06-15 21:08 taoeryuyi60\taoeryuyi60.ncb
文件 53760 2009-06-15 21:08 taoeryuyi60\taoeryuyi60.opt
文件 903 2009-06-15 21:08 taoeryuyi60\taoeryuyi60.plg
文件 3923 2009-06-16 16:31 taoeryuyi60\yuyi.cpp
文件 15 2009-06-15 21:08 taoeryuyi60\yuyi.txt
文件 28672 2009-06-24 00:47 编译课设_FINAL_报告\任务书.doc
文件 401408 2009-06-24 00:47 编译课设_FINAL_报告\编译课程设计报告_刘涛.doc
文件 98816 2009-06-24 00:48 编译课设_FINAL_报告\课程设计封面.doc
目录 0 2009-07-04 16:09 taoeryuyi60\Debug
目录 0 2009-07-04 16:09 taoeryuyi60
目录 0 2009-07-04 16:09 编译课设_FINAL_报告
----------- --------- ---------- ----- ----
6365672 23
- 上一篇:c++写的电子宠物系统
- 下一篇:C++图书管理系统代码及论文
相关资源
- 编译原理c语言编译器
- VC++实现CMD命令执行与获得返回信息
- 23种设计模式(C++实现版本
- c++实现的文件上传服务器
- 一个C++实现的源代码行数统计工具
- 纯C++实现的截屏
- C++实现21点游戏
- tiny+编译器C++实现
- 数值分析算法程序设计 C++实现
- mysql+dev c++实现订单管理系统
- VC++实现RSA加密算法
- C++实现RSA加密解密算法
- C++实现的斗地主游戏
- 企业人事管理系统c++实现
- 地铁计费系统C++实现dijkstra算法
- C++实现的蓝牙应用程序框架-BlueSolei
- arp欺骗C++实现
- C++实现监控IP数据包
- 粒子滤波器+目标跟踪的C++实现,VS2
- C++实现的职工管理系统
- 格雷码图片生成与保存C++实现代码
- MFC VC++实现Sierpinski分形图像
- c++实现ECC加解密
- 求点介数C++实现 Betweenness Centrality
- LL1语义分析的C语言子集编译器
- C++实现AES、DES加密算法含MFC界面
- 3DES加密算法C++实现
- C++实现多元线性回归 可指定任意几元
- PCA、KPCA数据降维C++实现
- BP算法的C++实现
评论
共有 条评论