簡體   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