From 604d197d4d48bb54f4a48cf5c64011ebe70f86e3 Mon Sep 17 00:00:00 2001 From: Rynco Maekawa Date: Sat, 17 Oct 2020 00:02:46 +0800 Subject: [PATCH] fix: move token spec into 3.3.2 --- readme-cpp.md | 7 +++---- readme-java.md | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/readme-cpp.md b/readme-cpp.md index 9ab931b..e2774e1 100644 --- a/readme-cpp.md +++ b/readme-cpp.md @@ -218,9 +218,6 @@ mini plc0 的完整文法如下,如果存在理解困难,请参阅附录[EBN <乘法型运算符> ::= '*'|'/' ``` -**注意**:在词法分析的时候,应采用最大吞噬(最长匹配)原则分析每一个 token。在分析中遇到空白符时,应和遇到其他不被 token 接受的字符时一样结束这个 token 的分析;在开始下一个 token 的分析时从当前位置之后的第一个非空白字符开始。 - - 参考翻译表 | 中文名 | 英文名 | 中文名 | 英文名 | 中文名 | 英文名 | @@ -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 为什么状态不是类成员而是局部变量 diff --git a/readme-java.md b/readme-java.md index 62ef2ef..795e633 100644 --- a/readme-java.md +++ b/readme-java.md @@ -210,8 +210,6 @@ mini plc0 的完整文法如下,如果存在理解困难,请参阅附录[EBN <乘法型运算符> ::= '*'|'/' ``` -**注意**:在词法分析的时候,应采用最大吞噬(最长匹配)原则分析每一个 token。在分析中遇到空白符时,应和遇到其他不被 token 接受的字符时一样结束这个 token 的分析;在开始下一个 token 的分析时从当前位置之后的第一个非空白字符开始。 - 参考翻译表 | 中文名 | 英文名 | 中文名 | 英文名 | 中文名 | 英文名 | @@ -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 我的状态机呢?