我正在尝试在 Swift 中从头开始制作像 ANTLR 这样的工具(只是为了好玩)。但我不明白语法如何知道不应该有空格(标识符示例:“_myIdentifier123”):
Identifier
: Identifier_head Identifier_characters?
并且应该有空格(例如“is String”):
type_casting_operator
: 'is' type
| 'as' type
| 'as' '?' type
| 'as' '!' type
;
我在 ANTLR 的源代码中搜索了 WS,但一无所获。java代码中没有“WS”字符串:https ://github.com/antlr/antlr4
谁能解释这背后的算法?它如何决定令牌是否用空格分隔?