Skip to content

重新理解项集族 #18

@acodercc

Description

@acodercc

从项集族的构造,到基于ItemSets的s/r表的生成,是shift/reduce的核心,虽然最终是查询s/r表决定自动机的工作,但ItemSets表,是将CFG -> productions / firsts / follows -> ItemSets -> s/r表,整个流程中核心的步骤。

  1. LR(1)自动机,每个状态是一个项集。项集中每个项,其输入点可能在最后,也可能不在最后。
  2. 在项集X中,输入点不在末尾的项i,会基于输入点位置的符号a,使用goto(X, a)函数创建一个新的项集Y。而新项集Y,和原项集X之间的关系,就是goto(X, a) === Y。
  3. 项集中的每个项,其输入点后的符号,如果是一个终结符a,则在parse时,遇到这个token-a,就将自动机进入下一个状态,就是这个项集的goto表上,通过移入a转换到的下一个状态(项集)。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions