Question

I'm trying to find a good EBNF description of ECMAScript, but so far I've not found anything complete.

Any ideas?

Was it helpful?

Solution

How about the ECMAScript standard? Complete by definition :-}

EDIT: If you want an existing grammar, try one of the grammar generator tools sites. For ANTLR, here's the ECMAScript grammar. I know nothing of its quality but the ANTLR can produce good parsers if the grammer is constructed with care. You'll probably find the grammar also interwoven with bunch of ANTLR stuff, so it may suffer from some of the same problem as the standard from your point of view. At least you can delete all that stuff out.

OTHER TIPS

Chapter 2 of Crockford's JavaScript: The Good Parts diagrams (you guessed it) the good parts.

Here are a couple stabs at BNF for JavaScript:

from this earlier SO question:

Repository of BNF Grammars?

I am working on -based parser for ECMAScript. Here's my grammar so far:

See also Tom Copeland's BNF for EcmaScript:

As well as "Yet Another JavaScript Interpreter":

As well as Dojo Toolkit's Grammar (probably based on YAJI):

From my point of view, YAJI or Dojo Toolkit's are the best and the most complete (to the best of my knowledge). I'm basing my work on those but want to make it even more complete (5.1/6) and standard-conform yet practical.

ECMAScript grammar is very tricky. It has a few huge caveats:

  • Regular Expression Literals vs. Division (you can't distinguishing them on the lexer level)
  • Automatic Semicolon Insertion (ASI)

So please be aware of that. Implementing those is very tricky.

If your target platform Java and you don't mind JavaCC, I'd be glad if you join my project. My grammar is actually ready (builds/compiles without warnings). I'm now working on test suites to cover each and every feature and production. I anticipate some problems with regex literals and ASIs though.

ps. I've just noticed that the question is from 09 so my invitation is probably too late. :)

try this link ecmascriptA3 it has the BNF of ecmascript

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top