명확한 SMIE 문서가 있습니까?


18

나는 많은 종류의 SMIE 들여 쓰기 규칙 / 문법 / 일을하려고 많은 시간을 보냈습니다.

실제로 작동하는 방법에 대한 문서 가 있거나 설명서 를 사용하는 방법에 대한 토론 이 포함 된 소형 장난감 또는 골격 SMIE 기반 모드의 예가 있습니까? 즉, 식은 세미콜론으로 끝나는 토큰 문자열로 표현을 정의하고 대괄호 사이의 표현식으로 블록을 지정합니다. 정말 간단합니까?

특정 질문 : smie-config-show-indent를 90 % 사용할 때 ': list-intro ""-> nil'이라는 응답을 얻습니다. 표현식 또는 표현식 목록에 대한 정의를 기반으로하는 목록 소개 란 무엇입니까? 왜 nil이라고 말하고 여전히 다음 줄을 들여 쓰기합니까? 어떻게 바꾸나요?

둘째 : 문법과 smie-rules 사이에 어떤 관계가 있습니까? 둘 다 smie-setup으로 전달 되었기 때문에 "블록을 볼 때 내용을 들여 쓰기"라고 말하는 방법을 찾을 수 없습니다. .

셋째, SMIE는 많은 규칙을 가지고있다. 간단히 시작하면 괄호, 괄호 및 괄호를 일반적으로 처리 할 수 ​​있습니다. 이러한 규칙을 보거나 수정하는 방법이 있습니까? 또는 구문 테이블 이이 모든 작업을 수행하고 SMIE가 문자 그대로 아무것도 수행하지 않는 것입니까 (필자가 시작하기 시작 함).

마지막으로 SMIE를 디버깅하려고 할 때 "편집, 평가 모드 버퍼, 다른 버퍼, MX <my mode>, test"주기의 예제 코드로 이동하려고 시도하지만 각 여행에서 규칙을 지우지 않는 것 같습니다. 이전주기. 정의 파생 모드가 깨끗한 시트에서 시작되는지 어떻게 확인할 수 있습니까? 나는 거기에 (kill-all-local-variables) 있지만 충분하지 않은 것 같아서 emacs를 닫아야합니다.

강조 표시 (글꼴 잠금 기본값 사용)를 제외하고 모호하게 작동하는 것이 없기 때문에 내가 가진 것의 예를 게시하지 않습니다. 실제로 SMIE가 아닙니다. 진짜 아기 발걸음이 필요합니다.


1
SMIE 제작자에게 문서를 요청하십시오.
Drew

4
@drew 그는 자신이 훌륭한 문서 작성자가 아니라고 주장했다.
Nagora

1
예, 알아요 그는 심지어 코드가 문서처럼 충분해야한다고 말했습니다. 내 제안 후에 " ;-) " 를 입력하는 것을 잊었 습니까? ;-)
Drew

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.