資源簡介
編譯原理課程設(shè)計-布爾表達式轉(zhuǎn)換為四元式
設(shè)計一個語法制導(dǎo)翻譯器,將布爾表達式翻譯成四元式。要求:先確定一個定義布爾表達式的文法,為其設(shè)計一個語法分析程序,為每條產(chǎn)生式配備一個語義子程序,按照一遍掃描的語法制導(dǎo)翻譯方法,實現(xiàn)翻譯程序。對用戶輸入的任意一個正確的布爾表達式,程序?qū)⑵滢D(zhuǎn)換成四元式輸出(可按一定格式輸出到指定文件中)。
代碼片段和文件信息
#include
#include?
#include?
using?namespace?std;
stack?s;?
void?sub_E();
void?sub_T();
void?sub_F();
void?GEQ(char);
int?????num=0;
char????QT[10][4]T=‘A‘c;
void?sub_E()
{
sub_T();
R1:?if(c==‘^‘)
{
????c=getchar();
????sub_T();
????GEQ(‘^‘);
????goto?R1;
}
}
void?sub_T()
{
sub_F();
R4:?if(c==‘&‘)
{
????c=getchar();
????sub_F();
????GEQ(‘&‘);
????goto?R4;
}
}
void?sub_F()
{
if(c>=‘a(chǎn)‘&&c<=‘z‘)
{
????s.push(c);
????c=getchar();
}
else?if(c==‘(‘)
{
????c=getchar();
????sub_E();
????if(c==‘)‘)
?????c=getchar();
????else
????{
????cout<<“括號不匹配!“< ?????exit(0);
????}
}
else
{
???cout<<“非法符號!“< ????exit(0);
}
}
void?GEQ(char?m)
{
QT[num][0]=m;
QT[num][2]=s.top();s.pop();
- 上一篇:osgActiveX源碼
- 下一篇:tic-tac-toe(三連棋游戲
評論
共有 條評論