69,382
社区成员
发帖
与我相关
我的任务
分享
//随便写了点,自己查一下错
#include <stdio.h>
int IsAlpha(char c)
{return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c == '_';}
int IsDigit(char c)
{return c >= '0' && c <= '9';}
int IsKeyWord(const char* str)
{return 0;}
int IsIdentifer(const char* str)
{
//非状态机部分
if (!str) return 0;
//进入初始状态
{
//第一个状态转移到失败状态或者第二个状态
if (!IsAlpha(*str)) return 0;
}
{
//第二个状态
//如果是'\0'则转换到第三个状态
//如果是字符或者数字则停留在第二个状态
//其它字符则转移到失败状态
for (++str; *str; ++str)
if (!IsAlpha(*str) && !IsDigit(*str))
return 0;
}
{
//如果是关键字则失败,否则第四个状态
}
//成功识别
return 1;
}
int main()
{
const char* test[] = {"123","_","a123", "1", "abcdABCD134", "a_b_c_1234", "baihacker"};
int i = 0;
for (i = 0; i < sizeof(test)/sizeof(test[0]); ++i)
printf("%s\t%d\n", test[i], IsIdentifer(test[i]));
return 0;
}