资源简介

全套课程设计,经检验,程序无BUG #include #include"lex.h" main() { //LexScan() //{ char ch,ch1;//存放读入的字符 char token[50]={'\0'};//存放识别的字符串 int i=0;//字符串的指针 int flag;//字符串比较的标志 AttrWord attrword[200]={{"\0"}};//定义属性字 int AWflag=1;//属性字计数器 int k,c,flag1=0,Linenum=1; FILE*fp=fopen("d:\\lex.txt","r"); if(fp==NULL) { printf("can't open text!"); exit(0); } ch=fgetc(fp);

资源截图

代码片段和文件信息

#include
#include“lex.h“
main()
{
//LexScan()
//{
char chch1;//存放读入的字符
char token[50]={‘\0‘};//存放识别的字符串
int i=0;//字符串的指针
int flag;//字符串比较的标志
AttrWord attrword[200]={{“\0“}};//定义属性字
int AWflag=1;//属性字计数器
int kcflag1=0Linenum=1;
FILE*fp=fopen(“d:\\lex.txt““r“);
if(fp==NULL)
{
printf(“can‘t open text!“);
exit(0);
}
ch=fgetc(fp);
while(ch!=EOF)
{

if(ch==‘ ‘||‘\t‘||‘\n‘) c=1;//略去空字
if((ch>=65&&ch<=90)||(ch>=97&&ch<=122)) c=2;//关键字以及标识符判断
if(ch>=48&&ch<=57) c=3;//ID
if((ch>=40&&ch<=45)||(ch>=58&&ch<=62)||ch==33||ch==93||ch==91||ch==123||ch==125) c=4;//运算符等
if(ch==‘/‘) c=5;//‘/‘符号单独处理
switch(c)
{
case 1: if(ch==‘\n‘)
Linenum++;
ch=fgetc(fp);break;
case 2:
while((ch>=65&&ch<=90)||(ch>=97&&ch<=122))
{
token[i]=ch;
i++;
ch=fgetc(fp);
}
i=0;
for(k=1;k<=29;k++)
{
flag=strcmp(tokensymbolcode[k].Letter);
if(flag==0)//关键字
{
attrword[AWflag].x=symbolcode[k].x;
strcpy(attrword[AWflag].Lettersymbolcode[k].Letter);
attrword[AWflag].Linenum=Linenum;
AWflag++;
flag1=1;
break;
}
}
//标识符(NUM)
if(flag1==0)
{
strcpy(attrword[AWflag].Lettertoken);
attrword[AWflag].x=26;attrword[AWflag].Linenum=Linenum;
AWflag++;
}
flag1=0;
for(k=0;k<=50;k++) token[k]=‘\0‘;
break;
case 3://ID
while(ch>=48&&ch<=57)
{
token[i]=ch;
i++;
ch=fgetc(fp);
}
i=0;
strcpy(attrword[AWflag].Lettertoken);
attrword[AWflag].x=25;attrword[AWflag].Linenum=Linenum;
AWflag++;
for(k=0;k<=50;k++) token[k]=‘\0‘;
break;
case 4:
ch1=ch;
if(ch1==‘<‘)//双字符处理
{
ch=fgetc(fp);
if(ch==‘=‘)
{
strcpy(attrword[AWflag].Letter“<=“);
attrword[AWflag].x=11;attrword[AWflag].Linenum=Linenum;
AWflag++;ch=fgetc(fp);
}
else{strcpy(attrword[AWflag].Letter“<“);
attrword[AWflag].x=10;attrword[AWflag].Linenum=Linenum;
AWflag++;}
}
else if(ch1==‘>‘)
{
ch=fgetc(fp);
if(ch==‘=‘)
{
strcpy(attrword[AWflag].Letter“>=“);
attrword[AWflag].x=13;attrword[AWflag].Linenum=Linenum;
AWflag++;ch=fgetc(fp);
}
else{strcpy(attrword[AWflag].Letter“>“);
attrword[AWflag].x=12;
attrword[AWflag].Linenum=Linenum; AWflag++;}
}
else if(ch1==‘=‘)
{
ch=fgetc(fp);
if(ch==‘=‘)
{
strcpy(attrword[AWflag].Letter“==“);
attrword[AWflag].x=14; 
attrword[AWflag].Linenum=Linenum;AWflag++;ch=fgetc(fp);
}
else{strcpy(attrword[AWflag].Letter“=“);
attrword[AWflag].x=16; 
attrword[AWflag].Linenum=Linenum;AWflag++;}
}
else if(ch1==‘!‘)
{
ch=fgetc(fp);
i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      91136  2010-01-10 14:28  编译原理课程设计\程序.doc

     文件       4174  2010-01-09 23:35  编译原理课程设计\词法部分\lex.c

     文件     163890  2010-01-09 23:35  编译原理课程设计\词法部分\lex.exe

     文件        612  2010-01-07 23:44  编译原理课程设计\词法部分\lex.h

     文件       8833  2010-01-09 23:35  编译原理课程设计\词法部分\lex.obj

     文件     163890  2010-01-09 23:35  编译原理课程设计\词法部分\tempfile.exe

     文件     180274  2010-01-09 19:04  编译原理课程设计\语法部分\tempfile.exe

     文件       3172  2010-01-09 19:04  编译原理课程设计\语法部分\text.cpp

     文件       3377  2010-01-08 23:08  编译原理课程设计\语法部分\text.dsp

     文件        533  2010-01-08 23:24  编译原理课程设计\语法部分\text.dsw

     文件     180274  2010-01-09 19:04  编译原理课程设计\语法部分\text.exe

     文件      50176  2010-01-08 23:24  编译原理课程设计\语法部分\text.ncb

     文件      11527  2010-01-09 19:04  编译原理课程设计\语法部分\text.obj

     文件      48640  2010-01-08 23:24  编译原理课程设计\语法部分\text.opt

     文件        734  2010-01-08 23:10  编译原理课程设计\语法部分\text.plg

     文件     180272  2010-01-08 23:10  编译原理课程设计\语法部分\Debug\text.exe

     文件     234876  2010-01-08 23:10  编译原理课程设计\语法部分\Debug\text.ilk

     文件      11887  2010-01-08 23:10  编译原理课程设计\语法部分\Debug\text.obj

     文件     272408  2010-01-08 16:26  编译原理课程设计\语法部分\Debug\text.pch

     文件     484352  2010-01-08 23:10  编译原理课程设计\语法部分\Debug\text.pdb

     文件      50176  2010-01-08 23:10  编译原理课程设计\语法部分\Debug\vc60.idb

     文件      61440  2010-01-08 23:10  编译原理课程设计\语法部分\Debug\vc60.pdb

     文件     760320  2010-01-11 00:59  编译原理课程设计\课程答辩.ppt

     文件     211456  2010-01-10 19:35  编译原理课程设计\课设报告2007024306常江.doc

     文件        338  2010-01-07 22:12  编译原理课程设计\新建文件夹\entry.h.txt

     文件        730  2010-01-07 22:12  编译原理课程设计\新建文件夹\node.h.txt

     文件        873  2010-01-07 22:10  编译原理课程设计\新建文件夹\parse.txt

     文件       1177  2010-01-07 22:20  编译原理课程设计\新建文件夹\symboltable.cpp.txt

     文件        371  2010-01-07 22:13  编译原理课程设计\新建文件夹\symtable.h.txt

     文件        576  2010-01-07 22:11  编译原理课程设计\新建文件夹\token.h.txt

............此处省略10个文件信息

评论

共有 条评论