(1) 构造文法G的LR(1)项目集族,C={I0,I1,…,In}
  (2) 合并所有的同心集,使C变为C′={J0,J1,…,Jm},便是LALR(1)的项目集族。
  由于构造LALR(1)分析表,通常所采用的方法是首先构造它的LR(1)项目集族,若不含任何冲突,则合并同心集,若仍不产生归约-归约冲突,则该文法便是LALR(1)文法,再根据合并同心集后的项目集族构造该文法的LALR(1)分析表。所以LALR(1)分析表的构造除了步骤(2)外,其余步骤与LR(1)分析表的构造相同
  (3) 由C′构造动作(ACTION)表,其方法与LR(1)分析表的构造相同。
  a) 若[A→α·aβ,b]∈Jk,且GO(Jk,a)=Jj,其中a∈VT,则置ACTION[k,a]="Sj",其Sj的含义是把输入符号a和状态j分别移入文法符号栈和状态栈。
  b) 若项目[A→α·,a]属于Jk ,则置ACTION[k,a]="rj",其中a∈VT,rj的含义是设A→α是文法的第j个产生式,此时为把栈顶符号串α归约为A。
  c) 若项目[S′→S·,#]属于Ik 则置ACTION[k,#]="acc",表示分析成功、接受。
  d) GOTO表的构造,对于不是同心集的项目集,转换函数的构造与LR(1)的相同,对同心集项目,由于合并同心集后,新集的转换函数也为同心集,所以,转换函数的构造也相同。
  为了说明步骤d),假定Ii1,Ii2,…,Iin是同心集,合并后的新集为Jk,转换函数GO(Ii1,X),GO(Ii2,X),…,GO(Iin,X)也为同心集,将其合并后记作Ji,因此,有GO(Jk,X)= Ji,所以当X为非终结符时,GO(Jk,X)=Ji,则置GOTO[k,X]=i,表示在k状态下遇非终结符X时,把X和i分别移到文法符号栈和状态栈,当X为终结符时,和ACTION表重合。
  e) 分析表中凡不能用(a)~(d)填入信息的空白均填"出错标志"。
  用上述步骤我们可以构造前文法的LALR(1)分析表如下:I3和I6合并后用I3,6表示,I4和I7合并后用I4,7表示,I8和I9合并后用I8,9表示,对文法合并同心集后的LALR(1)分析表如表7.12所示。
表 7.12 合并同心集后的LALR(1)分析表
状态 ACTION GOTO
a b # S B
0
1
2
3,6
4,7
5
8,9
S3,6
.
S3,6
S3,6
r3
.
r2
S4,7
.
S4,7
S4,7
r3
.
r2
.
acc
.
.
r3
r1
r2
1 2
.
5
8,9