[英]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.