LALR(1)方法 +它具有SLR(1)的状态数少的优点和LR(1) 的适用范围广的优点。 +LALR(1)方法的功能介于SLR(1)和LR(1 之间。 LALR(1)状态机的状态个数和LR(0)状态 机的状态个数相同,而其展望符则即不 采用SLR(1)的 Follow集方法,也不采用 LR(1)的完全精确法
LALR(1)方法 它具有SLR(1)的状态数少的优点和LR(1) 的适用范围广的优点。 LALR(1)方法的功能介于SLR(1)和LR(1) 之间。 LALR(1)状态机的状态个数和LR(0)状态 机的状态个数相同,而其展望符则即不 采用SLR(1)的Follow集方法,也不采用 LR(1)的完全精确法
LALR(1)的思想来源 LR(1)状态机和LR(状态机从它们所表 示的自动机角度来看是等价的 自动机可通过合并等价状态来减少状态 个数。 在LR(1)状态机出现很多同心状态,而 LALR(1)状态机则不产生同心的状态 从而大大减少状态数,这就是LALR(1)和 LR(1)的主要差别
LALR(1)的思想来源 LR(1)状态机和LR(0)状态机从它们所表 示的自动机角度来看是等价的 ; 自动机可通过合并等价状态来减少状态 个数。 在LR(1)状态机出现很多同心状态,而 LALR(1)状态机则不产生同心的状态, 从而大大减少状态数,这就是LALR(1)和 LR(1)的主要差别
LALR(1)状态机的定义方式: ÷用LR(1)状态机来定义; +用LR0状态机来定义。 LALR(1)状态机的构造方法 先构造LR(1)状态机,后构造LALR(1)状态机 ÷按LR(1)状态机的方式构造,但发现同心状态 时不产生新状态,而是采用合并状态的方法 先构造LR(0)状态机,而后用传播方式求出每 个项目的展望符集
LALR(1)状态机的定义方式: 用LR(1)状态机来定义; 用LR(0)状态机来定义。 LALR(1)状态机的构造方法: 先构造LR(1)状态机,后构造LALR(1)状态机 按LR(1)状态机的方式构造,但发现同心状态 时不产生新状态,而是采用合并状态的方法。 先构造LR(0)状态机,而后用传播方式求出每 个项目的展望符集
相关的术语 ÷假设[A→a·β,b是LR1)项目,则称其中 的LR(0)项目部分A→a·B为该项目的心。 如果LR(1)状态机中的两个状态具有相同的 心,则称它们为同心状态
相关的术语 假设[A→•, b]是LR(1)项目,则称其中 的LR(0)项目部分A→•为该项目的心。 如果LR(1)状态机中的两个状态具有相同的 心,则称它们为同心状态
例 假设在LR(1)状态机中有状态S1和S2 |A→°β,a1l,「B→π°,b1 S2={|A→°β,a2],|B→T●,b2]} Core(S1)={A→°β,B→T●}, Core(S2)={A→0阝,B→T} Same CoreState(s=s1,s, Merge(b1,32了 )={|A→a●B,{a1,a2 IB→°,{b1,b2
例 假设在LR(1)状态机中有状态S1和S2: S1 = { [A→•, a1 ],[B→•, b1 ] }, S2 = { [A→•, a2 ],[B→•, b2 ] } • Core(S1 )= { A→•, B→• }, • Core(S2 )= { A→•, B→• } , • SameCoreState( S1 )= { S 1 , S2 } • Merge({S1 , S2 }) = { [A→•, {a1 , a2 }], [B→•, {b1 ,b2 }] }