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

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

資源簡介

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

資源截圖

代碼片段和文件信息

#include?
#include?
#include?


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

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

/*********************分析表初始化操作******************************/
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“);

}

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

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


len?=?strlen(table_.right);


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

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

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

return?0;

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

????if?(inputstr[flag]?==?‘#‘) //發(fā)現#標記,分析完畢
{
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]

評論

共有 條評論