以下のようなコードを実行すると
console.log([
[1,1,8]
[2,1,16]
]);
このような結果になる。
[ undefined ]
アレレーってなってたんだけど kazuho さんにきいたところ、
[1,1,8][2,1,16] => ([1,1,8])[(2,1,16)] => ([1,1,8])[16] => undefined
ってことでした。
こんな時、Perl Monger ならとりあえず B::Deparse することによって解決の糸口をさがすんだけど、そういうの EcmaScript でどうすんすかね、ってなことを kazuho さんにきいたところ、esprima っていう es のパーサーがあるよって教えてもらったので、AST はとりだせたんだけど、AST をみても埒があかないので、AST からソースにおとす君がないかなーとさがしたところ const なんとかさんが escodegen ってのを書いていたようなので、この2つを組み合わせて問題を解決することができました。
以下のようなコードをかきます。
var esprima = require('esprima'),
fs = require('fs'),
escodegen = require('escodegen');
console.log(escodegen.generate(esprima.parse(fs.readFileSync(process.argv[2]))));
んで、前述のコードをくわせると
console.log([
[
1,
1,
8
][2, 1, 16]
]);
となって、「Ah, そういうことね!」となります。YATTA!
kazuhooku++, Constなんとか++