因为我要做一个编译器,表达式求值时需要判断当前数据项是常量还是用户定义的
变量。
这里认为数值型数均为常数,其他则不是
如:CString s("123"); //是常数
CString s("10.032"); //是常数
CString s("adasd"); //不是常数
怎么判断?
请高人指教!谢谢!!!Bow
变量。
这里认为数值型数均为常数,其他则不是
如:CString s("123"); //是常数
CString s("10.032"); //是常数
CString s("adasd"); //不是常数
怎么判断?
请高人指教!谢谢!!!Bow
解决方案 »
- ATL组件中函数调用的问题
- 关于CPtrList的一段程序:求修改[100分]
- 请问怎样能够通过循环给名字类似的变量赋值? (怎样可以合成变量名?)vc里
- 能不能提供视频采集在网络上传输的例子??
- 哪位大哥给系统的讲讲CSocketFile和CArchive.
- 请问在dll中开始的线程(自己写的 也在该dll中)是否随着dll函数的结束而结束呢?
- 急!!!vc进程与vb进程间通讯的好办法
- 我用ado控件做了一个显示sqlserver 数据库的表格程序 如果服务器每打开 怎么栏接到控件返回的错误
- Re:请问在2000/9x下如何得到别的进程句柄?
- CRecordset 异常 不知道哪里出错了。
- 播放RM文件
- 界面设计工作室
long l;
try
{
l=atol(s)
}
cath(...)
{
}
double d
try
{
d=atof((s)
}
cath(...)
{
}
这个函数在一定程度上说基本满足了我的需求,但是目前的问题是...它会将10A、10.23ASDFA等这样的字符串也认为是常量,这显然是不能接受的。大家还有没有更好的方法?
{
char Temp;
bool bHaveDec = false;
str.TrimLeft();
for(int i=0; i<m_OpenNum.GetLength(); i++)
{
Temp = str.GetAt(i);
if ((Temp <= '9') && (Temp >= '0'))
{
continue;
}
else
{
if (Temp != '.')
return false;
else
{
if (bHaveDec == true)
return false;
bHaveDec = true;
}
}
}
return true;
}
{
char Temp;
bool bHaveDec = false;
str.TrimLeft();
for(int i=0; i<str.GetLength(); i++)
{
Temp = str.GetAt(i);
if ((Temp <= '9') && (Temp >= '0'))
{
continue;
}
else
{
if (Temp != '.')
return false;
else
{
if (bHaveDec == true)
return false;
bHaveDec = true;
}
}
}
return true;
}