基于阅读@ sm4链接的代码,该策略看起来像是:
通常将输入标记化。因此A<B<C>> i;
将被标记为A, <, B, <, C, >>, i, ;
-8个令牌,而不是9个。
层次分析过程中,对仿制药的解析工作和时>
是必要的,如果与记号开始>
- ,>>
,>>>
,>=
,>>=
或>>>=
-只敲>
断,推动缩短令牌返回到令牌流。例如:当解析器到达>>, i, ;
,而在typeArguments工作规则,它成功地解析typeArguments,剩下的记号流是现在的略有不同>, i, ;
,因为第一>
的>>
是被拉断,以匹配typeArguments。
因此,尽管令牌化确实会正常发生,但是如果需要,在层次分析阶段会发生一些重新令牌化。
为什么编译器不重新标记诸如之类的东西
a--b
?@ johnchen902为什么要这样?重新标记不是挽救失败的解析的通用策略,它仅在一种特殊情况下使用,因此您不必编写
A<B<C> >
。