xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 9KB
    文件類型: .c
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-10-27
  • 語言: 其他
  • 標(biāo)簽: LL(1)語法??

資源簡(jiǎn)介

[實(shí)驗(yàn)項(xiàng)目] 實(shí)現(xiàn)算符優(yōu)先分析算法,完成以下描述算術(shù)表達(dá)式的算符優(yōu)先文法的算符優(yōu)先分析過程。 G[E]:E→E+T∣E-T∣T T→T*F∣T/F∣F F→(E)∣i 說明:終結(jié)符號(hào)i為用戶定義的簡(jiǎn)單變量,即標(biāo)識(shí)符的定義。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?


/***************************定義產(chǎn)生式******************************/
typedef?struct?Table{ //定義產(chǎn)生式
char?left; //產(chǎn)生式左部
char?right[5]; //產(chǎn)生式右部
char?all[10]; //產(chǎn)生式
}Table;

char?stack[200]; //堆棧體
char?inputstr[100]; //輸入串??????????
Table?table[12]; //產(chǎn)生式集

/*********************分析表初始化操作******************************/
void?init?()
{
table[0].left?=?‘E‘;??strcpy(table[0].right“TX\0“);??strcpy(table[0].all“E?->TX\0“);
table[1].left?=?‘X‘;??strcpy(table[1].right“ATX\0“);?strcpy(table[1].all“X?->ATX\0“);
table[2].left?=?‘X‘;??strcpy(table[2].right“ε\0“);??strcpy(table[2].all“X?->ε\0“);
table[3].left?=?‘T‘;??strcpy(table[3].right“FY\0“);??strcpy(table[3].all“T?->FY\0“);
table[4].left?=?‘Y‘;??strcpy(table[4].right“MFY\0“);??strcpy(table[4].all“Y?->MFY\0“);
table[5].left?=?‘Y‘;??strcpy(table[5].right“ε\0“);??strcpy(table[5].all“Y?->ε\0“);
table[6].left?=?‘F‘;??strcpy(table[6].right“(E)\0“);?strcpy(table[6].all“F->(E)\0“);
table[7].left?=?‘F‘;??strcpy(table[7].right“i\0“);??strcpy(table[7].all“F?->i\0“);
table[8].left?=?‘A‘;??strcpy(table[8].right“+\0“);?strcpy(table[8].all“A?->+\0“);
table[9].left?=?‘A‘;??strcpy(table[9].right“-\0“);?strcpy(table[9].all“A?->-\0“);
table[10].left?=?‘M‘;??strcpy(table[10].right“/\0“);?strcpy(table[10].all“M?->/\0“);
table[11].left?=?‘M‘;??strcpy(table[11].right“*\0“);?strcpy(table[11].all“M?->*\0“);

}

/*************************產(chǎn)生式右部入棧操作*************************/
int?StackPush?(int?*top?Table?table_)
{
int?len?i;

if?((*top)? {
printf(“\n\n\t\t\t抱歉,發(fā)現(xiàn)未知錯(cuò)誤!\n“);
exit(0);
}


len?=?strlen(table_.right);


if?(!strcmp(table_.right?“ε\0“)) //判斷產(chǎn)生式右邊是否為空,若為空,不進(jìn)棧。
{
stack[*top]?=?‘\0‘;
(*top)--;
return?0;
}

for?(i?=?len-1;?i?>=?0;?i--) //產(chǎn)生式逆序入棧
{
stack[(*top)++]?=?table_.right[i];
}

stack[*top]?=?‘\0‘;
(*top)--;

return?0;

}
/**********************查表操作,選擇所用產(chǎn)生式*********************/
int?Selecttable(int?top?int?flag)
{

????if?(inputstr[flag]?==?‘#‘) //發(fā)現(xiàn)#標(biāo)記,分析完畢
{
if?(stack[top]?==?‘E‘)???return?0;

if?(stack[top]?==?‘X‘)???return?2;

if?(stack[top]?==?‘T‘)???return?3;

if?(stack[top]?==?‘Y‘)???return?5;

if?(stack[top]?==?‘F‘)???return?7;

if?(stack[top]?==?‘A‘)???return?10;

if?(stack[top]?==?‘M‘)???return?12;
//return?12;
}

if?(inputstr[flag]?==?‘i‘)
{

if?(stack[top]?==?‘E‘)???return?0;

if?(stack[top]?==?‘X‘)???return?2;

if?(stack[top]?==?‘T‘)???return?3;

if?(stack[top]?==?‘Y‘)???return?5;

if?(stack[top]?==?‘F‘)???return?7;

if?(stack[top]?==?‘A‘)???return?10;

if?(stack[top]?==?‘M‘)???return?12;

return?13; //否則(以上情況均不滿足),分析失敗
}

if?(inputstr[flag]?==?‘(‘)
{

if?(stack[top]?==?‘E‘)???return?0;

if?(stack[top]?==?‘X‘)???return?2;

if?(stack[top]?==?‘T‘)???return?3;

if?(stack[top]

評(píng)論

共有 條評(píng)論