parametrelerle BNF'un herhangi bir değişiklik, biz, tanımlarla Öyle</p> <pre><code>LISTOF(EL) := "[" EL ("," EL)* "]" LISTNUM := LISTOF(NUMBER) LISTID := LISTOF(IDENT) </code></pre> <p>gibi bir şey demek
[435,657,44]
aşağıdakilere sahip
NUMBER := ('0'-'9')*
IDENT := ('a'-'z'|'A'-'Z')*
LISTNUM
örneği var mı
[dsf,thg,ewre]
,örneğidir.
Veya başka bir örnek (e boş bir dize demektir)
A(0) := e
A(n) := "a" A(n-1) | e
böylece, A (5) bütün dizeleri ayarlanır
5'ten fazla herhangi bir bilim var mıdır değil 'a' ile uzunluğunda oluşur buna benzer bir şeyi açıklayan işler? Dilbilgilerimizi böyle bir şekilde tarif edebilir miyiz ve yine de kabul edilebilir bir zamanda ayrıştırabilir miyiz?
Elbette bunu * yapabilirsin. Basit bir yol, parametreli BNF kurallarınızı makro olarak ele almak ve bunları geleneksel BNF'ye genişletmektir. Soru şu: * yapmalısın * Ek açıklık, pratikte size herhangi bir şey satın alıyor mu? Çok fazla dilbilgisi yapıyorum; Ben öyle düşünmüyorum. YMMV. –