มีเอกสาร SMIE ใดที่ชัดเจน?


18

ฉันใช้เวลาหลายชั่วโมงหลายชั่วโมงพยายามที่จะทำให้การเยื้องของ SMIE / ไวยากรณ์ / สิ่งต่าง ๆ ทำงานได้

มีตัวอย่างของโหมด SMIE ขนาดเล็กของเล่นหรือโครงกระดูกที่มีเอกสารประกอบเกี่ยวกับวิธีการใช้งานจริงหรือการอภิปรายใด ๆ เกี่ยวกับวิธีการใช้งานหรือไม่? สิ่งที่พูดกำหนดนิพจน์เป็นสตริงของโทเค็นที่ลงท้ายด้วยเซมิโคลอนและบล็อกเป็นนิพจน์บางอย่างระหว่างวงเล็บและไม่มีอะไรอื่น ง่ายจริงๆเหรอ?

คำถามเฉพาะเมื่อใช้ smie-config-show-indent 90% ของเวลาที่ฉันได้รับการตอบสนอง ': list-intro "" -> ไม่มี' list-intro อ้างอิงตามคำจำกัดความของนิพจน์หรือรายการของนิพจน์อะไร ทำไมมันบอกว่าไม่มีและยังคงเยื้องบรรทัดต่อไปนี้? ฉันจะเปลี่ยนได้อย่างไร

ประการที่สอง: มีความสัมพันธ์ใด ๆ ระหว่างไวยากรณ์และกฎระเบียบ smie ของฉันหรือไม่ ฉันคิดว่ามีเพราะทั้งคู่ผ่านเข้าไปใน smie-setup แต่ฉันไม่สามารถหาวิธีพูดว่า "เมื่อคุณเห็น 'บล็อก' เยื้องเนื้อหา 'ตัวอย่างเช่นอิงตามไวยากรณ์ที่ระบุบล็อก .

ประการที่สาม SMIE ดูเหมือนจะมีกฎมากมาย "อบใน" เพียงแค่เตะมันออกไปจะช่วยให้สามารถจัดการกับวงเล็บ, วงเล็บปีกกาและวงเล็บโดยทั่วไป มีวิธีใดบ้างที่จะเห็นกฎเหล่านี้หรือแก้ไขมัน? หรือว่าตารางไวยากรณ์กำลังทำสิ่งนี้ทั้งหมดและ SMIE ไม่ได้ทำอะไรเลย (ซึ่งฉันเริ่มสงสัย)

ในที่สุดเมื่อพยายามที่จะแก้ปัญหา SMIE ฉันพยายามที่จะ "แก้ไข, โหมดบัฟเฟอร์ eval ไปที่ตัวอย่างรหัสในบัฟเฟอร์อื่น ๆ MX <โหมดของฉัน> ทดสอบ" วงจร แต่ดูเหมือนว่าการเดินทางแต่ละรอบไม่ได้ล้างกฎจาก รอบก่อนหน้า ฉันจะแน่ใจได้อย่างไรว่าโหมด define-coming-mode เริ่มต้นจากคลีนชีต? ฉันมี (kill-all-local-variables) ในนั้น แต่ดูเหมือนจะไม่เพียงพอและท้ายที่สุดฉันต้องปิด emacs

ฉันไม่ได้โพสต์ตัวอย่างใด ๆ ของสิ่งที่ฉันมีเพราะฉันไม่มีสิ่งใดที่แม้แต่คลุมเครือนอกเหนือจากการไฮไลต์ (โดยใช้ฟอนต์ล็อคแบบปริยายดังนั้นจึงไม่ใช่ SMIE ที่ฉันเดาจริงๆ) ฉันต้องการขั้นตอนทารกจริง ๆ


1
ลองขอเอกสารจากผู้เขียน SMIE หรือไม่
ดึง

4
@drew เขาได้กล่าวต่อสาธารณชนว่าเขาไม่ใช่คนทำเอกสารที่ดี (และอ่านเอกสารของเขาฉันไม่สามารถโต้เถียงได้) ดังนั้นมันจึงไร้ประโยชน์
Nagora

1
ใช่ฉันรู้. เขายังกล่าวอีกว่ารหัสนั้นควรจะเพียงพอเช่นเดียวกับเอกสาร โอ้ฉันลืมใส่ " ;-) " ตามคำแนะนำของฉันหรือไม่? ;-)
ดึง

1
ฉันได้ดูที่นี่สักครู่และสังเกตเห็นว่าlisp/progmodes/sh-script.elดูเหมือนจะใช้smie.elอย่างกว้างขวาง พวกเขาดูเหมือนจะบันทึกการใช้งานของพวกเขาด้วยบางทีนี่อาจเป็นตัวอย่างที่ดีกว่า?
Xaldew

2
ทั้งโหมด SML และโหมด Modula2 ใช้ SMIE IIRC SMIE ถูกดึงมาจากโหมด SML ฉันต้องยอมรับฉันได้พบว่าสิ่งนี้เป็นเรื่องยากโดยเฉพาะ
ocodo

คำตอบ:



1

คุณสามารถเริ่มต้นด้วยสิ่งที่ชอบ

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

  ...
  (smie-setup foo-smie-grammar #'ignore)
  ...
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.