以MDN Spider Monkey Parser API web page为例。您可以看到Javascript方法返回的对象由元语言描述。该页面中的以下代码段:
interface Node {
type: string;
loc: SourceLocation | null;
}
描述一个名为Node
的对象,它有两个属性:type
和loc
。以下内容:
interface Program <: Node {
type: "Program";
body: [ Statement ];
}
描述另一个将从type
继承属性loc
和Node
并且将具有属性body
的对象。
这种元语言显然用于文档目的,因为Javascript没有输入,理解对象在处理它时会暴露什么会变得非常棘手。
示例例如,如果我必须记录一个由3个成员组成的Javascript对象:一个字符串,一个int数组和一个函数,我可能会这样:
interface MyObject {
path: string;
indices: [int];
evaluateScore: function;
}
这是一种记录暴露某些API的Javascript对象的聪明方法!但是在这里找不到标准!
问题我想了解有关此元语言的更多信息,但无法在Internet中找到资源。但是,为了使这个问题可回答而不是太通用,作为初学者,请考虑以下问题:
由于
请注意,这个问题与AST无关。 我不关心他们!我链接的页面恰好是关于AST的,但那是因为我找不到另一个使用这种元语言记录他们的JS东西的网页或库。我只是想了解更多关于MDN在该页面中使用的元语言来记录他们的JavaScript对象以及他们公开的API。
答案 0 :(得分:1)
我也花了很长时间寻找规范或这种格式的某种描述。一些项目似乎使用这种类型的IDL来记录AST,包括Babel,Handlebars和ESTree。
我在ESTree github存储库上发现了this问题,该问题表明它是一种自定义语法。我想知道这是否属实,因为很多大型项目决定使用这样的未记录语法似乎很奇怪。