JavaScript 自身のパーサってどんなのがあるのか気になったので
パーサとパーサ使ってるツールを調べたメモ

Babylon

https://github.com/babel/babel/tree/master/packages/babylon
  • Babel で使われてるパーサ
  • Babel のプロジェクトのひとつになってる
  • Prettier のデフォルトパーサもこれ
    • JavaScript だと他に flow も選べる
    • Prettier 自体は他に postcss, markdown, typescript, json, graphql も対応してるフォーマッタ
  • Acorn を元に作られてる
  • ESTree spec を元にした Babel AST フォーマットで出力

Acorn

https://github.com/acornjs/acorn
  • Tern で使われてる
  • ESTree spec の AST を返す

Espree

https://github.com/eslint/espree
  • Eslint のプロジェクトの一つでデフォルトパーサ
  • Esprima 互換のパーサ (同じ構造のASTを生成する)
  • 元は Esprima からのフォークで今は Acorn 上で動いている

Esprima

https://github.com/jquery/esprima
  • ESTree spec
  • jQuery のプロジェクト
  • 他の色々なパーサの元になってる

Flow Parser

https://github.com/facebook/flow/tree/master/src/parser
  • flow のパーサ
  • OCaml 製で SpiderMonkey's Parser API 準拠の AST を生成するパーサ
  • Esprima が生成するのとほぼ同じになるらしい
  • flow なので facebook 製

その他

  • Closure linter (compiler) のパーサは特に名前なさそう 見当たらなかった
  • 大きなプロジェクトに関係してない個人レベルくらいのメンテされてるかもわからないの
    • zeon, esprit, ...
  • IDE に組み込まれてるの
    • VisualStudio とか WebStorm とか