Açık olan herhangi bir SMIE belgesi var mı?


18

Şimdi, SMIE girinti kuralı / dilbilgisi / şey çalışma her türlü almaya çalışırken çok, çok saat geçirdim.

Gerçekte nasıl çalıştığına dair belgelere sahip küçük, oyuncak veya iskelet SMIE tabanlı bir mod örneği veya nasıl kullanılacağı hakkında herhangi bir tartışma var mı? Diyelim ki, bir ifade, noktalı virgülle biten belirteçler dizisi ve bir blok, parantezler ve başka hiçbir şey arasındaki bazı ifadeler olarak tanımlanır. Gerçekten, gerçekten basit mi?

Özel sorular: smie-config-show-indent kullanırken% 90 zamanını alırım: ': list-intro "" -> nil'. List-intro ifadesini veya ifade listesini temel alan nedir? Neden nil diyor ve hala aşağıdaki satırlara girintiliyor? Nasıl değiştiririm?

İkincisi: dilbilgim ile smie-kurallarım arasında herhangi bir ilişki var mı? İkisinin de smie-kurulumuna geçtiği için var olduğunu varsayıyorum, ancak "bir blok" gördüğünüzde, içeriği girintili hale getirdiğinizde ", örneğin, bir bloğu tanımlayan bir dilbilgisine dayanarak söylemenin bir yolunu bulamıyorum .

Üçüncüsü, SMIE'nin "pişmiş" birçok kuralı var gibi görünüyor. Sadece onu başlatmak, örneğin parantez, parantez ve parantezin genel olarak ele alınmasını sağlar. Bu kuralları görmenin veya değiştirmenin bir yolu var mı? Ya da sözdizimi tablosunun tüm bunları yapması ve SMIE'nin tam anlamıyla hiçbir şey yapmaması (şüphelenmeye başladım).

Son olarak, SMIE hata ayıklamaya çalışırken "edit, eval mode buffer, diğer buffer, MX <my mode>, test" döngüsünde örnek koda gitmeye çalışıyorum, ancak etraftaki her gezinin kuralları temizlemediği anlaşılıyor önceki döngü. Tanımdan türetilmiş modun temiz bir sayfadan başladığından nasıl emin olabilirim? Orada (tüm yerel değişkenleri öldür) var ama yeterli görünmüyor ve sonunda emac'ları kapatmak zorunda kalıyorum.

Sahip olduğum şeylere örnek vermiyorum çünkü vurgulamanın yanı sıra belirsiz bir şekilde işe yarayan hiçbir şeyim yok (yazı tipi-kilit-varsayılanlarını kullanarak, sanırım gerçekten SMIE bile değil). Bazı gerçek bebek adımlarına ihtiyacım var.


1
SMIE yazarından dokümantasyon isteyin mi?
Drew

4
@drew İyi bir belgesel olmadığını ve tartışamayacağım belgelerini okuduğunu açıkça belirtti, bu yüzden anlamsız görünüyor.
Nagora

1
Evet biliyorum. Hatta kodun doc olarak yeterli olması gerektiğini bile söyledi. Oh, önerimden sonra " ;-) " koymayı unuttum mu? ;-)
Drew

1
Bu bir süre önce bir göz vardı ve oldukça yaygın lisp/progmodes/sh-script.elgibi görünüyor fark ettim smie.el. Ayrıca kullanımlarını belgeliyor gibi görünüyorlar, belki bu daha iyi bir örnek olabilir mi?
16'da Xaldew

2
SML modu ve Modula2 modu SMIE kullanır. IIRC SMIE ilk olarak SML modundan çıkarıldı. İtiraf etmeliyim ki, bunu özellikle zor buldum.
16:16, ocodo

Yanıtlar:



1

Gibi bir şeyle başlayabilirsin

(defconst foo-smie-grammar
    (smie-prec2->grammar
     (smie-bnf->prec2
      '((exp ("begin" insts "end"))
        (insts (exp) (insts ";" insts))))))

  ...
  (smie-setup foo-smie-grammar #'ignore)
  ...
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.