2012-11-17 101 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