资源简介
河北工业大学编译原理实验,压缩包内含源代码与实验报告
代码片段和文件信息
#include
#include
#include
#include
#include
#define DIGIT 1
#define POINT 2
#define OTHER 3
#define POWER 4
#define PLUS 5
#define MINUS 6
#define UCON 7
#define ClassOther 200
#define EndState -1//无符号数识别程序宏定义
#define MI 8
#define MU 9
#define DI 10
#define ID 11
#define L 12
#define R 13//词法分析程序宏定义
#define RIGHT 1
#define ERROR 0
#define MAXINPUT 300
#define MAXSTACK 100
#define STARTSYMBOL ‘E‘//语法分析程序宏定义
char TOKEN[20];
int wnped;
int Class; //Used to indicate class of the word
int ICON;
double FCON;
static int CurrentState;
int row=1col=0;//词法分析程序全局变量
int index=0;//语法分析符号栈数组下标
int count=0;
char VT[8]={‘(‘‘i‘‘*‘‘/‘‘+‘‘-‘‘)‘‘#‘};
char stack[MAXSTACK]array[MAXINPUT];
char matrix[8][8]=
{‘<‘‘<‘‘<‘‘<‘‘<‘‘<‘‘=‘‘e‘
‘e‘‘e‘‘>‘‘>‘‘>‘‘>‘‘>‘‘>‘
‘<‘‘<‘‘>‘‘>‘‘>‘‘>‘‘>‘‘>‘
‘<‘‘<‘‘>‘‘>‘‘>‘‘>‘‘>‘‘>‘
‘<‘‘<‘‘<‘‘<‘‘>‘‘>‘‘>‘‘>‘
‘<‘‘<‘‘<‘‘<‘‘>‘‘>‘‘>‘‘>‘
‘e‘‘e‘‘>‘‘>‘‘>‘‘>‘‘>‘‘>‘
‘<‘‘<‘‘<‘‘<‘‘<‘‘<‘‘e‘‘=‘};//语法分析程序全局变量
char var=‘1‘;
char s[MAXSTACK];//语义分析程序全局变量
int GetChar(FILE *fp)
{
int c;
c=fgetc(fp);col++;
if(isdigit(c))
{
d=c-‘0‘;
return DIGIT;
}
if(c==‘.‘)
return POINT;
if(c==‘E‘||c==‘e‘)
return POWER;
if(c==‘+‘)
return PLUS;
if(c==‘-‘)
return MINUS;
return OTHER;
}
int EXCUTE(int stateint symbol)
{
switch(state)
{
case 0:switch(symbol)
{
case DIGIT:n=0;p=0;e=1;w=d;CurrentState=1;Class=UCON;break;
case POINT:w=0;n=0;p=0;e=1;CurrentState=3;Class=UCON;break;
default:Class=ClassOther;
CurrentState=EndState;
}
break;
case 1:switch(symbol)
{
case DIGIT:w=w*10+d;break; //CurrentState=1
case POINT:CurrentState=2;break;
case POWER:CurrentState=4;break;
default: ICON=w;CurrentState=EndState;
}
break;
case 2:switch(symbol)
{
case DIGIT:n++;w=w*10+d;break;
case POWER:CurrentState=4;break;
default:FCON=w*pow(10e*p-n);CurrentState=EndState;
}
break;
case 3:switch(symbol)
{
case DIGIT:n++;w=w*10+d;CurrentState=2;break;
default:printf(“Error!\n“);CurrentState=EndState;
}
break;
case 4:switch(symbol)
{
case DIGIT:p=p*10+d;CurrentState=6;break;
case MINUS:e=-1;CurrentState=5;break;
case PLUS:CurrentState=5;break;
default:printf(“Error!\n“);CurrentState=EndState;
}
break;
case 5:switch(symbol)
{
case DIGIT:p=p*10+d;CurrentState=6;break;
default:printf(“Error!\n“);CurrentState=EndState;
}
break;
case 6:switch(symbol)
{
case DIGIT:p=p*10+d;break;
default:FCON=w*pow(10e*p-n);CurrentState=EndState;
}
break;
}
return CurrentState;
}
void LEX(FILE *fp)
{
int ch;
CurrentState=0;
while(CurrentState!=EndState)
{
ch=GetChar(fp);
EXCUTE(CurrentStatech);
}
}//无符号数识别程序
void out(int mchar *aFILE *fp2)
{
fprintf(fp2“(“fp2);
switch(m)
{
case ID:fputs(“ID“fp2);ar
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 627 2017-01-02 15:56 编译原理\Read Me.txt
..A..H. 162 2017-12-18 15:15 编译原理\~$报告-计152-153111-王兵.docx
文件 19 2017-12-18 16:43 编译原理\合\file2_1.txt
文件 106 2018-01-04 22:13 编译原理\合\file2_2.txt
文件 9113 2017-12-18 16:41 编译原理\合\合.cpp
文件 3355 2017-12-18 16:37 编译原理\合\合.dsp
文件 512 2017-12-18 16:46 编译原理\合\合.dsw
文件 41984 2018-01-04 23:33 编译原理\合\合.ncb
文件 48640 2018-01-04 23:33 编译原理\合\合.opt
文件 728 2017-12-18 16:42 编译原理\合\合.plg
文件 41984 2018-01-04 22:13 编译原理\合\Debug\vc60.idb
文件 53248 2017-12-18 16:41 编译原理\合\Debug\vc60.pdb
文件 229465 2017-12-18 16:42 编译原理\合\Debug\合.exe
文件 252020 2017-12-18 16:42 编译原理\合\Debug\合.ilk
文件 28219 2017-12-18 16:42 编译原理\合\Debug\合.obj
文件 239844 2017-12-18 15:13 编译原理\合\Debug\合.pch
文件 517120 2017-12-18 16:41 编译原理\合\Debug\合.pdb
文件 29 2017-12-18 16:02 编译原理\实验一\file1_1.txt
文件 101 2017-12-18 16:02 编译原理\实验一\file1_2.txt
文件 6626 2017-12-18 16:10 编译原理\实验一\实验一.cpp
文件 3403 2017-12-18 16:02 编译原理\实验一\实验一.dsp
文件 520 2017-12-18 16:02 编译原理\实验一\实验一.dsw
文件 41984 2018-01-05 00:08 编译原理\实验一\实验一.ncb
文件 48640 2017-12-18 16:02 编译原理\实验一\实验一.opt
文件 748 2017-12-18 16:02 编译原理\实验一\实验一.plg
文件 33792 2017-12-18 16:02 编译原理\实验一\Debug\vc60.idb
文件 45056 2017-12-18 15:56 编译原理\实验一\Debug\vc60.pdb
文件 229473 2017-12-18 16:02 编译原理\实验一\Debug\实验一.exe
文件 231836 2017-12-18 16:02 编译原理\实验一\Debug\实验一.ilk
文件 21192 2017-12-18 16:02 编译原理\实验一\Debug\实验一.obj
............此处省略42个文件信息
评论
共有 条评论