91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3.49MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2024-02-02
  • 語(yǔ)言: C/C++
  • 標(biāo)簽:

資源簡(jiǎn)介

本程序能實(shí)現(xiàn)C語(yǔ)言子集的編譯,能實(shí)現(xiàn)的主要功能包括: (1)、實(shí)現(xiàn)編譯的詞法分析 (2)、語(yǔ)法分析 (3)、語(yǔ)義分析功能 (4)、錯(cuò)誤處理能力,并給出總的出錯(cuò)報(bào)告 (5)、編譯最終形成四元式的中間代碼形式

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#define?E?-1
#define??FLAG?100
#define?ACC?1000

//文法規(guī)則結(jié)構(gòu)
struct?rule
{
char?left[2];
char?right[10];
};

//鏈表結(jié)點(diǎn)
struct?word
{
char?w[10];
struct?word?*next;
};

//狀態(tài)棧結(jié)點(diǎn)結(jié)構(gòu)
struct?state
{
int?s;
struct?state?*next;
};

struct?word?*tem_name_list;???//臨時(shí)變量存放列表
struct?formula?*four_item;

int?_i;??//四元式編號(hào)
int?beg[100];???//存放要回填的四元式的編號(hào)
int?beg_i;
int?i_i;??//生成四元式的標(biāo)號(hào)
//添加結(jié)點(diǎn)到鏈表,其實(shí)下面的鏈表就是一棧
void?add_list(struct?word?**headchar?*p);

//結(jié)點(diǎn)出n次棧
void?pop(struct?word?**headint?n);

//添加結(jié)點(diǎn)到狀態(tài)到棧
void?state_add(struct?state?**headint?m);

//狀態(tài)結(jié)點(diǎn)出n次棧
void?state_pop(struct?state?**headint?n);
//在鏈表中查找單詞是否已經(jīng)存在,存在返回0,不存在返回-1
int?find_word(struct?word?*listchar?*p);
//判斷一個(gè)標(biāo)識(shí)符是否合法合法返回0,不合法返回-1
int?is_identifier(char?*p);
//判斷一個(gè)單詞是否是一個(gè)整數(shù),是返回0,不是返回-1
int?is_int(char?*p);
struct?word?*key_word;?????//保留關(guān)鍵字鏈表
struct?word?*identifier;???//用戶自定義標(biāo)識(shí)符
struct?word?*operation;????//運(yùn)算符
struct?word?*boundary;?????//界符



//四元式鏈表結(jié)點(diǎn)結(jié)構(gòu)
struct?formula
{
int?i;??????????//四元式編號(hào)
char?op[10];???//操作符
char?p1[10];????//
char?p2[10];
char?res[10];???
struct?formula?*next;
};
//文法規(guī)則矩陣
?struct?rule?rule_gather[27];
//規(guī)則矩陣初始化
?void?init_rule();

?//SLR(1)分析表

//查找并返回單詞對(duì)應(yīng)SLR(1)分析表中的列號(hào)如果不存在,則返回-1
int?find_num(const?char?*p);
//計(jì)算一個(gè)字符串有多少個(gè)字符
int?word_num(const?char?*p);

//產(chǎn)生一個(gè)新的臨時(shí)變量T1T2、、、、
char?*create_tem(char?*p);

//打印出一個(gè)四元式
void?printf_four(char?*operchar?*p1char?*p2char?*res);

//對(duì)歸約時(shí)會(huì)改變語(yǔ)義棧的規(guī)則編寫語(yǔ)義子程序
void?r_16(struct?word?**yuyi_stackchar?*p1char?*p2);
void?r_18(struct?word?**yuyi_stackchar?*p1char?*p2char?*tem);
void?r_19(struct?word?**yuyi_stackchar?*p1char?*p2char?*tem);
void?r_21(struct?word?**yuyi_stackchar?*p1char?*p2char?*tem);
void?r_22(struct?word?**yuyi_stackchar?*p1char?*p2char?*tem);
void?r_26(struct?word?**yuyi_stackchar?*p1);

//根據(jù)規(guī)則編號(hào),調(diào)用相應(yīng)的語(yǔ)義子程序
void?call_r(struct?word?**yuyi_stackint?mchar?*input_word);

//語(yǔ)法分析,整個(gè)程序語(yǔ)法正確返回0,否則返回-1
int?syntax_analyze(FILE?*fp);


//添加結(jié)點(diǎn)到鏈表,其實(shí)下面的鏈表就是一棧
void?add_list(struct?word?**headchar?*p)
{

if(*head==NULL)
{
*head=(struct?word*)malloc(sizeof(struct?word));
strcpy((*head)->wp);
(*head)->next=NULL;
}
else
{
struct?word?*tem=(struct?word*)malloc(sizeof(struct?word));
strcpy(tem->wp);
tem->next=*head;
*head=tem;
}
}

//結(jié)點(diǎn)出n次棧
void?pop(struct?word?**headint?n)
{
struct?word?*tem;
if(n<1)
return;
while(n)
{
if(*head==NULL)
return;
tem=*head;
*head=(*head)->next;
free(tem);
n--;
}
}

//添加結(jié)點(diǎn)到狀態(tài)到棧
void?state_add(struct?state?**headint?m)
{

if(*head==NULL)
{
*head=(struct?state*)malloc(sizeof(struct?state));
(*head)->s=m;
(*head)->next=NULL;
}
else
{
struct?state?*tem=(struct?state*)malloc(sizeof(struct?state));
tem->s=m;
tem->next=*head;
*head=tem;
}
}

//狀態(tài)結(jié)點(diǎn)出n次棧
void?state_pop(struct?state?**headint?n)
{
struct?state?

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件?????????38??2009-12-30?23:42??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\1.txt

?????文件?????????49??2011-01-07?02:53??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\123.txt

?????文件?????????42??2011-01-07?18:13??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\2.txt

?????文件?????????54??2011-01-07?18:19??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\3.txt

?????文件?????????78??2011-01-07?13:27??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\566.txt

?????文件?????????52??2011-01-07?02:52??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\77.txt

?????文件?????????52??2009-12-28?00:26??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\88

?????文件?????????52??2011-01-07?02:53??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\88.txt

?????文件?????????59??2011-01-07?02:53??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\99.txt

?????文件??????28794??2009-12-28?09:38??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\analy.cpp

?????文件??????????0??2009-12-25?01:42??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\analy.h

?????文件????????189??2011-01-07?18:19??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\analy_res.txt

?????文件??????22236??2011-01-07?12:43??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.APS

?????文件???????1470??2010-01-07?10:07??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.clw

?????文件???????2035??2009-12-15?21:20??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.cpp

?????文件???????4542??2009-12-28?09:42??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.dsp

?????文件????????555??2009-12-15?21:20??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.dsw

?????文件???????1311??2009-12-15?21:20??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.h

?????文件???????1479??2010-12-22?23:45??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.idc

?????文件???14027776??2011-01-07?18:42??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.ncb

?????文件??????????0??2009-12-25?13:11??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.ncb?(Can‘t?open)

?????文件??????48640??2010-01-14?11:52??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.opt

?????文件????????264??2010-01-13?23:02??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.plg

?????文件???????5794??2009-12-28?10:23??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.rc

?????文件????????908??2011-01-07?12:47??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.sln

????..A..H.?????15360??2011-01-07?18:42??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.suo

?????文件???????8228??2011-01-07?12:47??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.vcproj

?????文件???????1427??2011-01-07?18:42??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器.vcproj.D38387E719004BD.Administrator.user

?????文件???????7185??2009-12-28?10:25??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器Dlg.cpp

?????文件???????1409??2009-12-28?10:19??C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器\C語(yǔ)言子集編譯器Dlg.h

............此處省略26個(gè)文件信息

評(píng)論

共有 條評(píng)論