[
實驗任務
]
1、實現算符優先分析演算法。
2、完成以下描述算術表示式的算符優先文法的算符優先分析過程。
g[e]:e
→e+t
∣e-t∣t
t→
t*f∣
t/f∣
f f→
(e)∣
i
說明:終結符號i為使用者定義的簡單變數,即識別符號的定義。
[設計要求
]
1、構造該算符優先文法的優先關係矩陣或優先函式;
2、輸入串應是詞法分析的輸出二元式序列,即某算術表示式「實驗專案一」的輸出結果。輸出為輸入串是否為該文法定義的算術表示式的判斷結果。
3、算符優先分析過程應能發現輸入串出錯。
4、設計兩個測試用例(盡可能完備,正確和出錯),並給出測試結果。
opg.cpp
main()
filter(buffer);
for (unsigned i = 0; i < strlen(buffer) - 1; i++)
}if (tail_buffer < (int)strlen(buffer) && tail_buffer != -1)
}int num = 0;
bool head_flag = false, tail_flag = false;
for (i = 0; i < strlen(stack); i++)
if (tail_buffer == num)
if (head_flag && tail_flag)
if (is_terminate(stack[i]))
}if (head_stack != 0 && !is_terminate(stack[head_stack-1]))
if (tail_stack != (int)strlen(stack)-1 && !is_terminate(stack[tail_stack+1]))
gui_yue(head_stack, tail_stack);
tail_buffer = -1;
head_buffer = -1;
tail_stack = 0;
head_stack = 0;
}if (strcmp(stack, "#a#") == 0)
}fclose(in);
return 0;
}
簡單算符優先文法分析程式(編譯原理)
實現算符優先文法分析程式 完成對以下表示式文法的分析程式。includeint find int a,int b 優先關係表 return table a 1 b 1 int in vt char c 可以根據返回的數值去優先關係表裡面查詢優先關係 return n int judge char p...
編譯原理 算符優先法文法分析
include include include include using namespace std 輸入文法 string input 儲存文法 vectorcontext 非終結符 vector char vn 終結符 vector char vt firstvt集 map char stri...
編譯原理實驗 算符優先演算法
本實驗參照學校實驗報告冊的演算法所作,行事倉促,有很多不足,望加指正 驗證文法1 e e t t t t f f f e a 語句示例 a a 驗證文法2 s a b t t t,s s 語句示例 a,a,a 因未加入對 的拆分,所以輸入文法是需手動拆分產生式.本程式所輸文法,必須為算符優先文法 結...