资源简介
这是编译原理语义分析程序 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++图书管理系统代码及论文
相关资源
- VC++实现WORD事件处理与报表输出功能
- VC++实现的车牌定位与识别系统
- C++实现用Hopfiled网络解决TSP问题
- P2P聊天软件的C++实现包括语音功能
- visual c++实现的跳棋程序
- 用C++实现MapInfo 的mif文件读取源码
- 七巧板VC++实现
- Snake主动轮廓模型的C++实现
- 用C++实现OFDM
- 决策树C4.5算法的c++实现
- 分水岭算法VC++实现
- KNN分类算法C++实现十次十倍交叉验证
- MiniSQL 用C++实现100166
- 用C++实现远程控制
- sbc codec的C++实现
- NotePad的生成 C++实现
- C++实现视频播放器
- RC4 C++实现
- DES算法(C++实现)49106
- VC++实现的网络爬虫程序,非常适合做
- 三次样条插值函数c++实现
- 使用C++实现多项式的运算
- 道格拉斯普克算法的C++实现
- K-means算法的C++实现
- vc++实现曲线显示界面,曲线类型有:
- 用VC++实现打开并显示bmp图片
- 编译原理与技术李文生:LR分析法C+
- VC++实现记事本的各种功能
- C++实现吃豆子人小游戏windows控制台
- traceroute在windows下的c++实现源代码
评论
共有 条评论