是否有正式的(理想情况下是 BNF)打字稿 js 语言语法(或只有打字稿子集)? [关闭]

Posted

技术标签:

【中文标题】是否有正式的(理想情况下是 BNF)打字稿 js 语言语法(或只有打字稿子集)? [关闭]【英文标题】:Is there a formal (ideally BNF) typescript js language grammar (or only typescript subset)? [closed] 【发布时间】:2012-09-25 02:47:58 【问题描述】:

我正在寻找 Typescript 语法。 不是解析器-词法分析器,而只是正式的语法描述。 我想实现 ts 它的代码折叠和基本静态代码分析,作为 GNOME 的一个简单 linux IDE 的插件。

【问题讨论】:

为什么不能只使用编译器本身来构建 AST?毕竟是开源的…… 【参考方案1】:

一种 ANTLR4 语法,但不可否认“不完全……符合 TypeScript 标准”(现有编程语言的官方语法太少了,这很痛苦):

https://github.com/antlr/grammars-v4/tree/master/typescript

【讨论】:

【参考方案2】:

如果在 here 或 here(当前版本)中找到了 TypeScript Language Reference 的附录 A,版本 1.8 中的形式语法

【讨论】:

在 typescript repo 的a ticket 中与开发人员一起阅读holiwar 实际上很有趣。结论是放弃规范,因为他们没有资源来保持最新我接受它。【参考方案3】:

由于 typescript 是 Ecmascript 5 (http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf/) 的严格超集,您可以使用语法定义扩展任何 ecmascript bnf来自 Typescript 规范。

起点可以是:http://www.antlr3.org/grammar/1153976512034/ecmascriptA3.g

【讨论】:

【参考方案4】:

也许您可以在源代码中找到参考,例如compiler/tokens.js

【讨论】:

他要求像coffeescript.org/documentation/docs/grammar.html这样的语法定义。 它有助于找出使用了哪些标记以及如何定义它们,但这只是词法分析器的一部分。我需要一些正式符号的规则来创建解析器并能够构建 AST来自给定的打字稿文本。 Chrome 警告该链接:“前面的网站包含有害程序”

以上是关于是否有正式的(理想情况下是 BNF)打字稿 js 语言语法(或只有打字稿子集)? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

是否可以用打字稿覆盖不同 typeNum 的模板?

没有指定参数的打字稿类型函数

node.js 中的打字稿不会删除 dist 文件夹?

是否可以在不使用 JSX 的情况下使用 React Hooks API(在打字稿中)

特定 javascript 实例化模式的正确打字稿定义是啥

使用单个文件进行打字稿调试