realint.h
来自「一个简单的词法分析程序。是编译原理的部分课程设计。因为时间有限。未能完成全部。如」· C头文件 代码 · 共 74 行
H
74 行
/*=============================================
** 2005-8-22 **
** 识别实常数 **
** lizhu zhang **
=============================================*/
/*=============================================
**函数用能:判断该字符串是否为实常数.
**参数说明:[in]pString:接受传入的字符串
**返回值 : 成功返回0,错误返回i;不是整常数但
** 不错误返回1;
**===========================================*/
int FRealInt(const char *pString)
{
char word[2048];
strcpy(word,pString);
//定义标志,记录"."和"+ ","-"出现的次数
int flagDot(0),flagPlusSub(0);
//查看开始是否为符号或数字
if(word[0]=='+'||word[0]=='-'||(word[0]>='1'&&word[0]<='9'))
{
int i = 1;
while(word[i]!='\0'&&(word[i]>='0'&&word[i]<='9'))
i++;
if(word[i] == '.'||word[i] == 'e')
{
if(word[i] != 'e')
i++;
//识别小数点后面的部分
while(word[i]!='\0'&&(word[i]>='0'&&word[i]<='9'))
i++;
if(word[i] == '\0')
//识别成功
return 0;
else
{
i ++;
if(word[i] != 'e')
//识别错误
return i+1;
else
if(word[i+1] == '+' ||word[i+1] =='-' && flagPlusSub == 0)
{
//跳过e和+,-符号
i += 2;
while(word[i]!='\0'&&(word[i]>='0'&&word[i]<='9'))
i++;
if(word[i]!='\0')
return i+1;
else
return 0;
}
else
if(word[i+1]>='0'&&word[i+1]<='9')
{
i += 2;
while(word[i]!='\0'&&(word[i]>='0'&&word[i]<='9'))
i++;
if(word[i]!='\0')
return i+1;
else
return 0;
}
else
return i+2;
}
}
else
//错误,返回错误位置
return i+1;
}
else
return 1;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?