首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

计算器中遇到的有关问题

2012-02-09 
计算器中遇到的问题 我现在在对表达式词法分析时遇到了问题:问问谁有这个的词法分析的算法啊?我的程序如下

计算器中遇到的问题

我现在在对表达式词法分析时遇到了问题:
问问谁有这个的词法分析的算法啊?


我的程序如下:

我的思想是
(1)对表达式做词法分析,Token序列存到Queue队列中
(2)把Queue队列中的中序表达式转化为后序表达式,存到Queue_L队列中
(3)对Queue_L队列存的后序表达式求值

void   CCounterDlg::f_Depart()//将表达式分离:数字入栈,符号入栈,错误则显示错误,词法分析
{
int   i;
for(i=0;i <strlen(m_EditAll);i++)
{
switch(m_EditAll[i])
{
case   '0 ':
case   '1 ':
case   '2 ':
case   '3 ':
case   '4 ':
case   '5 ':
case   '6 ':
case   '7 ':
case   '8 ':
case   '9 ':
AddToBuf(m_EditAll[i]);
break;
case   '. ':
if(m_PointFlag==FALSE)
{
AddToBuf(m_EditAll[i]);
m_PointFlag=TRUE;
}
else
MessageBox( "你输入了好多小数点~~ ");
break;

case   '+ ':
case   '- ':
if((strlen(m_EditAll)!=0)&&(m_EditAll[strlen(m_EditAll)-1]> = '0 ')&&(m_EditAll[strlen(m_EditAll)-1] <= '9 '))
{
f_Change();
AddToToken(1);

m_TempToken.Type=m_EditAll[i];
m_TempToken.value=0;
Queue.push(m_TempToken);

}
else   if(strlen(m_EditAll)==0||m_EditAll[strlen(m_EditAll)-1]== '( '
||m_EditAll[strlen(m_EditAll)-1]== ') ')
{
m_TempToken.Type=m_EditAll[i];
m_TempToken.value=0;
Queue.push(m_TempToken);
}
else
{
MessageBox( "加减号前面有运算符错误~~~ ");
}
break;


case   '* ':
case   '/ ':
case   '^ ':
if(m_EditAll[strlen(m_EditAll)-1]> =48&&m_EditAll[strlen(m_EditAll)-1] <=57)
{
f_Change();
AddToToken(1);

m_TempToken.Type=m_EditAll[i];
m_TempToken.value=0;
Queue.push(m_TempToken);
}
else
MessageBox( "运算符好多... ");
break;

case   '( ':
if(m_EditAll[strlen(m_EditAll)-1]> =48&&m_EditAll[strlen(m_EditAll)-1] <=57)
{
MessageBox( "括号前面的符号错误~~~ ");
}
else
{
m_TempToken.Type=m_EditAll[i];
m_TempToken.value=0;
Queue.push(m_TempToken);
}
break;
case   ') ':
if(m_EditAll[strlen(m_EditAll)-1]> =48&&m_EditAll[strlen(m_EditAll)-1] <=57)
{
f_Change();
AddToToken(1);

m_TempToken.Type=m_EditAll[i];
m_TempToken.value=0;
Queue.push(m_TempToken);
}
else   if(m_EditAll[strlen(m_EditAll)-1]== ') ')
{
m_TempToken.Type=m_EditAll[i];
m_TempToken.value=0;
Queue.push(m_TempToken);
}
else
MessageBox( "右括号前面出错~~ ");

}
}
}

[解决办法]
看程序好累,帮顶

热点排行