Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ECMAScript的EBNF?_Javascript_Bnf_Ebnf_Ecma262_Javacc - Fatal编程技术网

Javascript ECMAScript的EBNF?

Javascript ECMAScript的EBNF?,javascript,bnf,ebnf,ecma262,javacc,Javascript,Bnf,Ebnf,Ecma262,Javacc,我试图找到ECMAScript的一个好的EBNF描述,但到目前为止我还没有找到任何完整的描述 有什么想法吗?你觉得这个怎么样? 按定义完成:-} 编辑:如果需要现有语法,请尝试使用语法生成器工具网站之一。 对于ANTLR,以下是 . 我对它的质量一无所知,但是如果语法构建得很小心,ANTLR可以生成好的解析器。您可能会发现语法也与一堆ANTLR内容交织在一起,因此从您的角度来看,它可能会遇到一些与标准相同的问题。至少你可以删除所有这些内容。Crockford的JavaScript第2章:好的部分

我试图找到ECMAScript的一个好的EBNF描述,但到目前为止我还没有找到任何完整的描述

有什么想法吗?

你觉得这个怎么样? 按定义完成:-}

编辑:如果需要现有语法,请尝试使用语法生成器工具网站之一。 对于ANTLR,以下是 .
我对它的质量一无所知,但是如果语法构建得很小心,ANTLR可以生成好的解析器。您可能会发现语法也与一堆ANTLR内容交织在一起,因此从您的角度来看,它可能会遇到一些与标准相同的问题。至少你可以删除所有这些内容。

Crockford的JavaScript第2章:好的部分图表(你猜到了)好的部分

下面是BNF for JavaScript的几个尝试:

从前面的问题:

试试这个链接,它有ecmascript的BNF

我正在为ecmascript开发基于的解析器。以下是我目前的语法:

EcmaScript另请参见Tom Copeland的BNF:

以及“另一个JavaScript解释器”:

以及DojoToolkit的语法(可能基于YAJI):

在我看来,YAJI或Dojo工具包是最好的,也是最完整的(据我所知)。我的工作是以这些为基础的,但我想让它更完整(5.1/6),更符合标准,更实用

ECMAScript语法非常复杂。它有几个巨大的警告:

  • 正则表达式文字与除法(您无法在lexer级别区分它们)
  • 自动分号插入(ASI)
所以请注意这一点。实现这些是非常棘手的

如果你的目标平台是Java,而你不介意JavaCC,我很高兴你能加入我的项目。我的语法实际上已经准备就绪(生成/编译时没有警告)。我现在正在开发测试套件,以涵盖每个特性和产品。不过,我预计regex文本和ASIs会出现一些问题


另外,我刚刚注意到这个问题是从09年开始的,所以我的邀请可能太迟了

也许是精确的,但它是一种PDF格式,在整个文档中传播语法片段,并使用粗体作为文字标记-这意味着(自动或手动)从中提取完整的EBNF将是一种冗长的痛苦。是的,由于ANTLR实际上是一个语法,我应该能够创建一个脚本来转换它。稍后我会尝试一下,看看我能做到什么。(与ANTLR本身相处得不太好,所以我正在尝试各种其他工具,看看我更喜欢什么)。嘿,所以只要测试ANTLR脚本以确保其工作,我就会得到
171警告/28错误/BUILD FAIL
:/第一个错误是突出显示选项中显然微不足道的词汇表,因此不确定上面有什么:(我真的希望我不会为了手动编译一个工作语法而被迫翻阅近两百个PDF页面。欢迎使用开源。你到底想做什么?答案中的脚本链接已经死了(2014年3月)-新链接是Tom Copeland一个不完整(没有令牌或终端)-它是从一个JavaCC脚本生成的,即使我尝试使用原始脚本,我也会不断出错。对于另一个dherman/ClassicJavascript链接,我不知道它是关于什么的:SYeah。我只是认为没有人对脚本语言的EBNF非常感兴趣。动态语言不适合递归下降编译。What good是一个传统的编译器,当你可以动态地用字符串构建函数时?加速JS是关于FORT的,比如TIL、公共路径的运行时分析、标记化等等。我确实对如何处理动态内容有一些模糊的想法,但到目前为止我还没有做到这一点!你能提供一些解释吗(或提供链接)“TIL”是什么-搜索太多,无法返回任何内容。:(线程解释语言(如Forth等语言)。你应该准备好Python编译器。问题是你带来了多少运行时间。Microsoft DLR也很有趣。链接已断开:404确实如此。谷歌搜索表明它现在在github上。编辑链接“ps。我刚刚注意到问题来自09,所以我的邀请可能太晚了。”没有-我想要这个项目已经搁置了很长一段时间,虽然不幸的是我现在没有时间重新启动它,但我仍然有模糊的计划在某个时候这样做。我已经为你的项目添加了书签,以备下次有机会时使用。谢谢。)