1
我的意思是這樣是否有BNF與參數
LISTOF(EL) := "[" EL ("," EL)* "]"
LISTNUM := LISTOF(NUMBER)
LISTID := LISTOF(IDENT)
所以任何修改,以定義
NUMBER := ('0'-'9')*
IDENT := ('a'-'z'|'A'-'Z')*
,我們有以下
[435,657,44]
是例子LISTNUM
,
[dsf,thg,ewre]
是的示例。
或者另一個例子中(E表示空字符串)
A(0) := e
A(n) := "a" A(n-1) | e
所以,A(5)被設置的所有字符串的包括 'A' 與長度不超過5
是否有任何科學描述與此相似的作品?我們能否以這種方式描述我們的語法,並且仍然能夠在可接受的時間內解析它?
當然你*可以*做到這一點。一種簡單的方法是將參數化的BNF規則作爲宏來處理,並簡單地將它們擴展爲傳統的BNF。問題是*你應該這樣做嗎?額外的表現力在實踐中爲你購買什麼?我建立了很多語法;我不這麼認爲。因人而異。 –