Skip to content

Commit

Permalink
fix: move token spec into 3.3.2
Browse files Browse the repository at this point in the history
  • Loading branch information
lynzrand committed Oct 16, 2020
1 parent 07218e2 commit 604d197
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 7 deletions.
7 changes: 3 additions & 4 deletions readme-cpp.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,6 @@ mini plc0 的完整文法如下,如果存在理解困难,请参阅附录[EBN
<乘法型运算符> ::= '*'|'/'
```

**注意**:在词法分析的时候,应采用最大吞噬(最长匹配)原则分析每一个 token。在分析中遇到空白符时,应和遇到其他不被 token 接受的字符时一样结束这个 token 的分析;在开始下一个 token 的分析时从当前位置之后的第一个非空白字符开始。


参考翻译表

| 中文名 | 英文名 | 中文名 | 英文名 | 中文名 | 英文名 |
Expand Down Expand Up @@ -288,7 +285,9 @@ namespace miniplc0 {

从图中可以看出,各token的first集是完全不重合的,在具体实现时,可以通过判断第一个非空白符后调用对应的词法分析子程序,避免一个巨大的if/switch,提高可维护性。

同时这里有一点必须说明的是,对于形如 `123abc` 这种输入,我们应当识别为两个 token,即 `123``abc`
在词法分析的时候,应采用最大吞噬(最长匹配)原则分析每一个 token。在分析中遇到空白符时,应和遇到其他不被 token 接受的字符时一样结束这个 token 的分析;在开始下一个 token 的分析时从当前位置之后的第一个非空白字符开始。

特别说明一下,对于形如 `123abc` 这种输入,我们应当识别为两个 token,即 `123``abc`

#### 3.3.3 为什么状态不是类成员而是局部变量

Expand Down
6 changes: 3 additions & 3 deletions readme-java.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,6 @@ mini plc0 的完整文法如下,如果存在理解困难,请参阅附录[EBN
<乘法型运算符> ::= '*'|'/'
```

**注意**:在词法分析的时候,应采用最大吞噬(最长匹配)原则分析每一个 token。在分析中遇到空白符时,应和遇到其他不被 token 接受的字符时一样结束这个 token 的分析;在开始下一个 token 的分析时从当前位置之后的第一个非空白字符开始。

参考翻译表

| 中文名 | 英文名 | 中文名 | 英文名 | 中文名 | 英文名 |
Expand Down Expand Up @@ -277,7 +275,9 @@ public enum TokenType {

从图中可以看出,各token的first集是完全不重合的,在具体实现时,可以通过判断第一个非空白符后调用对应的词法分析子程序,避免一个巨大的if/switch,提高可维护性。

同时这里有一点必须说明的是,对于形如 `123abc` 这种输入,我们应当识别为两个 token,即 `123``abc`
在词法分析的时候,应采用最大吞噬(最长匹配)原则分析每一个 token。在分析中遇到空白符时,应和遇到其他不被 token 接受的字符时一样结束这个 token 的分析;在开始下一个 token 的分析时从当前位置之后的第一个非空白字符开始。

特别说明一下,对于形如 `123abc` 这种输入,我们应当识别为两个 token,即 `123``abc`

#### 3.3.3 我的状态机呢?

Expand Down

0 comments on commit 604d197

Please sign in to comment.