能识别浮点数的简单语法分析
时间: 2024-03-16 17:44:36 浏览: 17
下面是一个简单的语法分析器,可以识别浮点数:
```
<浮点数> ::= <整数部分> "." <小数部分>
| "." <小数部分>
| <整数部分> "."
<整数部分> ::= <数字> <整数部分> | <数字>
<小数部分> ::= <数字> <小数部分> | <数字>
```
其中,`<数字>` 表示 0-9 中的任意一个数字。
语法分析器的实现如下:
```python
def parse_number(s):
if not s or not s[0].isdigit():
return False, None
i = 1
while i < len(s) and s[i].isdigit():
i += 1
if i < len(s) and s[i] == '.':
j = i + 1
while j < len(s) and s[j].isdigit():
j += 1
if j < len(s):
return False, None
return True, float(s[:j])
elif i == len(s):
return True, int(s)
else:
return False, None
```
该函数接受一个字符串作为参数,返回一个布尔值和一个数值。如果字符串可以解析为浮点数,则返回 True 和对应的数值,否则返回 False 和 None。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](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)