能识别浮点数的简单词法分析程序(C语言实现)
时间: 2023-12-05 17:03:14 浏览: 21
可以使用 C 语言的字符数组和循环结构来实现一个简单的词法分析程序,以下是一个可以识别浮点数的示例代码:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char input[100];
int i = 0;
int hasDot = 0;
printf("请输入一个字符串:");
scanf("%s", input);
while (input[i] != '\0') {
if (isdigit(input[i])) {
i++;
} else if (input[i] == '.' && !hasDot) {
hasDot = 1;
i++;
} else {
printf("输入不合法!\n");
return 0;
}
}
printf("输入合法!\n");
return 0;
}
```
这个程序首先要求用户输入一个字符串,然后使用循环逐个读取字符串中的字符。如果字符是数字,则继续循环;如果字符是小数点且之前没有出现过小数点,则将 `hasDot` 标志设置为 1 并继续循环;否则,认为输入不合法并退出程序。
需要注意的是,这个程序只能识别简单的浮点数,如 "3.14",而不能识别科学计数法表示的浮点数,如 "1.23e-4"。如果需要支持更复杂的浮点数表示方法,需要对程序进行进一步扩展。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)