繁体   English   中英

制作语法LL

[英]Make the Grammar LL

我已经浪费了两倍的时间来转换它,但我总是起床得到共同的前缀ID。

有谁可以向我解释一下? 因为我正在努力为一个非常大的语法而且需要我的基础知识清楚。

A,B,C,D是唯一的非终端设备。

A : ‘(‘ B ‘)’ 
 | ID ASSIGN C 
 | C 

C : C '+' D 
 | C '-' D 
 | D 

D : ID 
 | ID '(' actuals ')' 
 | ID '(' ')' 
 | INT_LIT 
 | ‘(‘ C ‘)’ 


B : B ';' A | A

在LL中,生产不能有从同一终端开始的多个选项,因此如果愿意,可以将这些公共部分拉入共享头。 所以

D : ID 
 | ID '(' actuals ')' 
 | ID '(' ')' 
 | INT_LIT 
 | ‘(‘ C ‘)’ 

变成了一些东西

D : D_things_that_start_with_ID
 | D_things_that_do_not_start_with_ID

哪里

D_things_that_start_with_ID :
  ID D_things_that_follow_ID

D_things_that_follow_ID :
  epsilon
  | '(' actuals ')' 
  | '(' ')' 

D_things_that_do_not_start_with_ID :
 INT_LIT 
 | ‘(‘ C ‘)’ 

等等其他常见的引导符号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM