簡單算符優先文法分析程式(編譯原理)

2021-07-08 10:43:01 字數 1638 閱讀 1446

實現算符優先文法分析程式;完成對以下表示式文法的分析程式。

#includeint find(int a,int b)   //優先關係表

; return table[a-1][b-1];

}int in_vt(char c) //可以根據返回的數值去優先關係表裡面查詢優先關係

return n;

}int judge(char *p,int k,char *psc)

if((*psc == '+' || *psc == '*') && (*(psc + 1) == '+' || *(psc + 1) == '*'))

if(*psc == '#' && (*(psc - 1) == '+' || *(psc - 1) == '*'))

return 1;

}int main()

; //分析棧

char *ss;

char in_c[50] = ; //輸入串

char *psc; //指向當前輸入符號

int j;

char q;

int flag;

int n;

while(1)

if(in_vt(s[k]))

j = k;

else

j = k - 1;

flag = find(in_vt(s[j]),in_vt(*psc));

if(flag == 1) //如果s[j] > 當前輸入字元

while(find(in_vt(s[j]),in_vt(q)) != -1);

printf("(%d)\t%-24s>\t\t%c\t\t%-32s歸約\n",n++,ss,*psc,psc+1);

k = j + 1;

s[k] = 'n';

s[k+1] = '\0';

continue;

}else if(flag == -1)

else if(flag == 0)

else

}else

}} return 0;

}

編譯原理實驗四 算符優先文法語法分析

實驗任務 1 實現算符優先分析演算法。2 完成以下描述算術表示式的算符優先文法的算符優先分析過程。g e e e t e t t t t f t f f f e i 說明 終結符號i為使用者定義的簡單變數,即識別符號的定義。設計要求 1 構造該算符優先文法的優先關係矩陣或優先函式 2 輸入串應是詞法...

編譯原理 算符優先法文法分析

include include include include using namespace std 輸入文法 string input 儲存文法 vectorcontext 非終結符 vector char vn 終結符 vector char vt firstvt集 map char stri...

算符優先分析

算符優先分析 time limit 1000 ms memory limit 65536 kib problem description 演算法優先分析法是一種不太規範的自下而上分析方法,分析速度快,特別適用於表示式的分析。為了便於大家理解和實踐算符優先分析法,本題目先給出乙個算符優先文法,請大家構...