代码之家  ›  专栏  ›  技术社区  ›  emk

javascript中的javascript解析器[关闭]

  •  67
  • emk  · 技术社区  · 14 年前

    我需要在javascript源代码中添加一些轻量级语法糖,并使用基于javascript的构建系统对其进行处理。有没有用javascript编写的开源javascript解析器?当运行在v8或类似的高性能javascript实现之上时,它们是否相当快?

    感谢您提供的任何指导!

    9 回复  |  直到 8 年前
        1
  •  32
  •   mishoo    13 年前

    UglifyJS (js compressor/beautifier in javascript)包含一个完整的javascript解析器,它公开了一个简单的api。它在一些大型项目(webkit)中得到了大量的测试和使用。

        2
  •  24
  •   Jim    13 年前

    Crescent Fresh在评论中回答了这个问题:

    jslint包含一个用javascript编写的javascript解析器。见 JSlint by Douglas Crockford 在第2712行开始分析程序。jslint也是为处理html而编写的,因此您必须对这些部分进行修饰。

        3
  •  22
  •   Johannes Gerer    8 年前

    这个 fastest javascript中的javascript解析器 esprima .

    它也给了你

    抽象语法树(ast)的合理格式,与mozilla解析器api兼容

        4
  •  9
  •   Claudiu    11 年前

    acorn 是一个用javascript编写的非常快速的javascript解析器。它甚至比 esprima 现在。我得到的结果是铬合金的 esprima's speed comparison page :

    Source            Esprima    UglifyJS2    Traceur    Acorn
    Underscore 1.4.1  15.1       23.8         14.2       7.6
    Backbone 1.0.0    17.1       30.2         16.7       7.9
    jQuery 1.9.1      241.1      247.2        125.4      81.4
    Total             273.3 ms   301.2 ms     156.3 ms   96.9 ms
    

    它与Mozilla的解析器API兼容,因此您可以使用 escodegen 从解析树生成javascript。

        5
  •  8
  •   alunny    14 年前

    它本身不是一个javascript解析器,但是有一个名为 Jison (像野牛)用于生成用js编写的解析器。

        6
  •  7
  •   Christian C. Salvadó    14 年前

    唯一 metacircular interpreter 我看到用javascript实现的是 Narcissus 发动机。

    它也是由brendan eich开发的,他们使用了许多特定于 蜘蛛猴 ,我认为它在V8上不起作用。

        7
  •  5
  •   Janus Troelsen    12 年前

    微软已经用typescript开发了typescript编译器。由于typescript是javascript的严格超集,并且typescript编译为javascript,因此从技术上讲,生成的编译器是用javascript编写的javascript编译器。

    当然这取决于你对“编译器”的定义。但是,如果一个编译器接受一个语言a的超集,而不是一个语言a编译器,那就排除了gcc、clang和几乎所有其他编译器。

        8
  •  3
  •   Janus Troelsen    12 年前

    https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API :

    独立spidermonkey shell的最新版本包括 spidermonkey解析器的反射,作为javascript提供 应用程序编程接口。

    注意,这只是JavaScript中的一个API,解析器是C++。

        9
  •  0
  •   Pavel Vlasov Jaiwo99    9 年前

    js/cc-用于javascript的lalr(1)解析器和词汇分析器生成器,用javascript编写- http://jscc.phorward-software.com/