ile ayrıştırma düzeyi düzeyi PEG for Python style indentation ile aynı soruya sahibim, ancak this answer ile ilgili biraz daha fazla yönelmek istiyorum. Yanıt, başarılı bir şekilde, satırlar arasında 'INDENT' ve 'DEDENT' ile her bir girdi satırı olan bir dizi dizeyi başarılı bir şekilde oluşturur. Görünüşe göre çok fazla PEG.js kullanıyor, ancak gerçek ayrıştırma gerçekleşmiyor.PEG.js
Örneğini bazı gerçek ayrıştırma yapmak için nasıl genişletebilirim?
start = obj
obj = id:id children:(indent obj* outdent)?
{
var o = {};
o[id] = children[1];
return (children[1] ? o : id);
}
id = [a-z]
indent = '{'
outdent = '}'
blok belirginleştiren yerine parantez girintilemesini kullanın ve hala aynı çıktıyı almak için: Örnek olarak
, bunu nasıl dilbilgisi değiştirebilirim?(aşağıdaki girişi ile bu dilbilgisi test etmek için http://pegjs.majda.cz/online kullanın: a{bcd{zyx{}}}
)
Bu anwser için gerçekten minnettarım. Bu yöntemle nasıl gelirsiniz lütfen? – jiyinyiyong
Bu kopyayı doğrudan http://pegjs.majda.cz/online içine kopyalayıp yapıştırırsam derleme yapmaz. Ve biraz düzeltmeden sonra, bunun nasıl düzeltileceği açık değildir. – Clearly
Sadece bunu test ettim, parçacık beklenen çıktıyı derler ve üretir. Orada ne tür hatalar yaptığınızdan emin değilim. – chakrit