Sha256: 2db8e1f9b5a0c92c2a28b59c9237b16866b4978771f314d1116b77b6ff5c654b

Contents?: true

Size: 1.69 KB

Versions: 12

Compression:

Stored size: 1.69 KB

Contents

// Acorn: Loose parser
//
// This module provides an alternative parser (`parse_dammit`) that
// exposes that same interface as `parse`, but will try to parse
// anything as JavaScript, repairing syntax error the best it can.
// There are circumstances in which it will raise an error and give
// up, but they are very rare. The resulting AST will be a mostly
// valid JavaScript AST (as per the [Mozilla parser API][api], except
// that:
//
// - Return outside functions is allowed
//
// - Label consistency (no conflicts, break only to existing labels)
//   is not enforced.
//
// - Bogus Identifier nodes with a name of `"✖"` are inserted whenever
//   the parser got too confused to return anything meaningful.
//
// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API
//
// The expected use for this is to *first* try `acorn.parse`, and only
// if that fails switch to `parse_dammit`. The loose parser might
// parse badly indented code incorrectly, so **don't** use it as
// your default parser.
//
// Quite a lot of acorn.js is duplicated here. The alternative was to
// add a *lot* of extra cruft to that file, making it less readable
// and slower. Copying and editing the code allowed me to make
// invasive changes and simplifications without creating a complicated
// tangle.

import * as acorn from ".."
import {LooseParser} from "./state"
import "./tokenize"
import "./parseutil"
import "./statement"
import "./expression"

export {LooseParser} from "./state"

acorn.defaultOptions.tabSize = 4

export function parse_dammit(input, options) {
  let p = new LooseParser(input, options)
  p.next()
  return p.parseTopLevel()
}

acorn.parse_dammit = parse_dammit
acorn.LooseParser = LooseParser

Version data entries

12 entries across 12 versions & 4 rubygems

Version Path
xcodebuild-helper-1.2.5 externals/ios-sim-master/node_modules/acorn/src/loose/index.js
minimum_viable_product-0.0.11 test/dummy/node_modules/acorn/src/loose/index.js
brwy_rails-0.0.6 test/dummy/node_modules/acorn/src/loose/index.js
brwy_rails-0.0.5 test/dummy/node_modules/acorn/src/loose/index.js
xcodebuild-helper-1.2.3 externals/ios-sim-master/node_modules/acorn/src/loose/index.js
brwy_rails-0.0.4 test/dummy/node_modules/acorn/src/loose/index.js
brwy_rails-0.0.3 test/dummy/node_modules/acorn/src/loose/index.js
brwy_rails-0.0.2 test/dummy/node_modules/acorn/src/loose/index.js
brwy_rails-0.0.1 test/dummy/node_modules/acorn/src/loose/index.js
gulp_assets-1.0.0.pre.5 template/node_modules/babel-core/node_modules/acorn-jsx/node_modules/acorn/src/loose/index.js
gulp_assets-1.0.0.pre.4 template/node_modules/babel-core/node_modules/acorn-jsx/node_modules/acorn/src/loose/index.js
gulp_assets-1.0.0.pre.3 template/node_modules/babel-core/node_modules/acorn-jsx/node_modules/acorn/src/loose/index.js