資源簡介
編譯原理,詞法分析,語法分析,四元式生,設計報告

代碼片段和文件信息
#include?“stdio.h“
#include?“Parse.h“
#include?“Global.h“
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?NULL?0
#define?OK?1
#define?size?100
FILE?*fp;
char?ch;
char?*keyword[6]={“begin““else““end““if““then““var“};
char?*comparison[5]={“<““<=““>““>=““<>“};
char?*equal[1]={“=“};
char?*interpunction[10]={“““;““:=““.““(““)““+““-““*““/“};
char?*now[2]={“while““do“};
int?flag[1]={1};
char?buffer[10][100];
int?inc=-1;
bool?search(char?searchstr[]int?wordtype)
{
???????int?i;
???????switch?(wordtype)
???????{
?????????????case?1:for(i=0;i<=5;i++)
{
????????????????????????if(strcmp(keyword[i]searchstr)==0)
?????????????????????????return(true);
??????????????????????????????
?????????????????????}
?break;
???
??????????????case?2:?for(i=0;i<=4;i++)
???????????????????????????{
????????????????????????????if(strcmp(comparison[i]searchstr)==0)
?????????????????????????????return(true);
???????????????????????????}
??break;
??????????????case?3:?for(i=0;i<=9;i++)
???????????????????????????{
????????????????????????????if(strcmp(interpunction[i]searchstr)==0)
?????????????????????????????return(true);
???????????????????????????}
??break;
??????????????case?4:for(i=0;i<=1;i++)
?{
?????????????????????????????if(strcmp(now[i]searchstr)==0)
?????????????????????????????return(true);
?}
??break;
??case?5:{
?????????????????????????????if(strcmp(equal[0]searchstr)==0)
?????????????????????????????return(true);
?}
??break;
???????}
?????????????????????????return(false);
}
char?letterprocess?(char?ch)//字母處理函數???????????????????????
{
???int?i=-1j=1;
???char?letter[20];
???while?(isalnum(ch)!=0)
???{
?????letter[++i]=ch;
?????ch=fgetc(fp);
???}
?letter[i+1]=‘\0‘;
?if?(search(letter1))
?{
?printf(“<%s->\n“letter);printf(“aaaaa“);
?????flag[0]=0;
?}
?else?if(search(letter4))
?printf(“<%s->\n“letter);
?else
?{
??printf(“\n“letter);
??strcpy(buffer[++inc]letter);
?}
?return(ch);
}
char?numberprocess(char?ch)//數字處理程序
{
????int?i=-1;
????char?num[20];
// printf(“該文法不在此次考慮中\n“);
flag[0]=0;
????while?(isdigit(ch)!=0)
????{
????????num[++i]=ch;
????????ch=fgetc(fp);
????}
????if(isalpha(ch)!=0)
????{
???????while(isspace(ch)==0)
???????{
??????????num[++i]=ch;
??????????ch=fgetc(fp);
???????}
???????num[i+1]=‘\0‘;
???????printf(“錯誤!非法標識符:%s\n“num);
???????goto?u;
?????}
???????num[i+1]=‘\0‘;
???????printf(“\n“num);
???????u:?return(ch);
}
char?otherprocess(char?ch)
{
????int?i=-1;
????char?other[20];
????if?(isspace(ch)!=0)
????{
????????ch=fgetc(fp);
????????goto?u;
????}
????while?((isspace(ch)==0)&&(isalnum(ch)==0))
????{
????????other[++i]=ch;
????????ch=fgetc(fp);
????}
????other[i+1]=‘\0‘;
????if?(search(other3))
{
printf(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????????18??2005-06-21?21:10??ljSimple\lj.txt
?????文件??????54784??2005-06-23?15:42??ljSimple\Main.opt
?????文件???????3375??2005-06-22?09:26??ljSimple\Main.dsp
?????目錄??????????0??2005-06-22?09:26??ljSimple\Debug
?????文件????????533??2005-06-22?09:27??ljSimple\Main.dsw
?????文件????????249??2005-06-21?23:20??ljSimple\Global.h
?????文件???????1932??2005-06-21?22:07??ljSimple\Parse.h
?????文件????????242??2005-06-23?14:47??ljSimple\Main.plg
?????文件???????2978??2005-06-21?22:07??ljSimple\Prece.H
?????文件???????1007??2005-06-21?21:30??ljSimple\Stack.h
?????文件???????4656??2005-06-21?23:00??ljSimple\Main.c
?????文件??????13310??2005-03-19?13:07??ljSimple\MAIN.EXE
?????文件??????58368??2005-06-23?15:42??ljSimple\Main.ncb
?????目錄??????????0??2005-06-20?14:08??ljSimple
????..A.SH.????????10??2006-10-11?12:39??ljSimple\_desktop.ini
?????文件??????84992??2005-06-23?15:39??ljSimple\課程設計報告書.doc
????....SHR?????????9??2007-01-12?22:14??ljSimple\Desktop_.ini
?????文件?????708150??2005-06-23?14:52??ljSimple\運行結果.bmp
-----------?---------??----------?-----??----
???????????????934831????????????????????19
評論
共有 條評論