2012-11-17 103 views
1

我在哪裏可以找到Emacs Lisp語法的正式規範(EBNF或其他標準符號 - 「讀取」函數的源代碼不計算!)?Emacs Lisp的形式語法

我甚至會對.y文件感到滿意;不幸的是,emacs自己的解析器不使用yacc。

回答

1

我認爲它和任何lisp語言都是一樣的,不是嗎?這是一個描述從Lisp的頁面在維基百科上的Lisp:

expression -> atom | list 
atom -> number | name | string | operator 
list -> '(' expression* ')' 
+1

不,這還沒有結束。 Emacs Lisp還有許多其他類型 - 字符和字符串文字,矢量,圖表,用於開始 - 具有特殊的讀取語法。我想要一個覆蓋它的語法。 –

0

我懷疑你會找到的Emacs Lisp形式文法,比源代碼等。 (其實我很確定你不會)

但是你是什麼真的需要?你想做什麼?很可能你可以做到這一點,而不訴諸正式的語法。爲什麼?由於Lisp語法非常簡單,並且在運行時可以使用包括Lisp閱讀器在內的完整語言。

Lisp語法在某種程度上也是可以修改的,所以它的語法可以在運行時改變。對於Emacs Lisp來說,情況並非如此,但對於其他Lisp來說,例如Common Lisp(閱讀器宏)肯定是這種情況。因此,儘量把自己放在Lisp世界中,並用預先定義的語言語法來重新解釋你的問題,而不是你需要完成什麼。

總之,儘量縮小問題範圍,讓我們知道你需要做什麼。忘記有一個可用的正式語法意味着要做到這一點。但是如果你清楚地描述「它」,那麼很可能人們可以具體地提供幫助。

+0

我想爲另一種與Emacs Lisp兼容的語言創建語法,因爲它可以將elisp格式作爲(一種)非終結符。我想要正式的語法,以確保我沒有留下任何案件。 –

+1

明白了。恐怕沒有Emacs Lisp的這種文檔語法。源代碼儘可能的接近你所能得到的。 ;-)但是一些元編程工具可能會間接幫助。例如,即使是font-lock和imenu代碼也可以讓你瞭解一些最重要的結構,包括代碼定義結構,例如defmacro和defun。 – Drew