From 7feb14c0ea3a24af60f8b6c6f108b066023bd36b Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Wed, 3 Oct 2012 11:04:26 +0200 Subject: [PATCH] Add a shell interface --- bin/acorn | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 bin/acorn diff --git a/bin/acorn b/bin/acorn new file mode 100755 index 0000000000..492805dc2e --- /dev/null +++ b/bin/acorn @@ -0,0 +1,40 @@ +#!/usr/bin/env node + +var path = require('path'); +var fs = require('fs'); +var acorn = require(path.join(path.dirname(fs.realpathSync(__filename)), "../acorn.js")); + +var infile, parsed, options = {}, silent = false, compact = false; + +function help(status) { + console.log("usage: " + path.basename(process.argv[1]) + " infile [--ecma3|--ecma5] [--strictSemicolons]"); + console.log(" [--trackComments] [--locations] [--compact] [--silent] [--help]"); + process.exit(status); +} + +for (var i = 2; i < process.argv.length; ++i) { + var arg = process.argv[i]; + if (arg == "--ecma3") options.ecmaVersion = 3; + else if (arg == "--ecma5") options.ecmaVersion = 5; + else if (arg == "--strictSemicolons") options.strictSemicolons = true; + else if (arg == "--trackComments") options.trackComments = true; + else if (arg == "--locations") options.locations = true; + else if (arg == "--silent") silent = true; + else if (arg == "--compact") compact = true; + else if (arg == "--help") help(0); + else if (arg[0] == "-") help(1); + else infile = arg; +} + +if (!infile) help(1); + +try { + var code = fs.readFileSync(infile, "utf8"); + parsed = acorn.parse(code, options); +} catch(e) { + console.log(e.message); + process.exit(1); +} + +if (!silent) + console.log(JSON.stringify(parsed, null, compact ? null : 2));