二、数值常量的例子有123,123.01,123E2,123.01E3,其中第1个为整数,第2个为实数,第3个和第4个为科学记数法表达方式。 (1)写出数值常量的正则表达式(6分); (2)画出所得正则表达式的NFA(6分),再由子集构造法得出 DFA 的状态转换表Dtran,再画出其 DFA 图。(6分)
时间: 2024-03-11 17:46:16 浏览: 62
(1) 数值常量的正则表达式为:
```
^[+-]?\d+(\.\d+)?([Ee][+-]?\d+)?$
```
(2) 数值常量的NFA如下图所示:
![数值常量的NFA](https://i.imgur.com/2y4GJ9F.png)
使用子集构造法得到的DFA的状态转换表如下:
| | 0-9 | . | E/e | + | - |
|---|:-------:|:-:|:---:|:-:|:-:|
|->A| B | | | C | C |
| *B| B | C | D | | |
| C| | | | | |
| *D| E | | | | |
|->E| E | F | G | | H |
| *F| F | | | | H |
| G| H | | | | H |
| *H| H | | | | |
其中,带*的状态为终止状态。DFA的状态转换图如下:
![数值常量的DFA](https://i.imgur.com/fHsfYgC.png)
阅读全文