そこで、JISON を介してパーサーを生成しました。
// mygenerator.js
var Parser = require("jison").Parser;
// a grammar in JSON
var grammar = {
"lex": {
"rules": [
["\\s+", "/* skip whitespace */"],
["[a-f0-9]+", "return 'HEX';"]
]
},
"bnf": {
"hex_strings" :[ "hex_strings HEX",
"HEX" ]
}
};
// `grammar` can also be a string that uses jison's grammar format
var parser = new Parser(grammar);
// generate source, ready to be written to disk
var parserSource = parser.generate();
// you can also use the parser directly from memory
// returns true
parser.parse("adfe34bc e82a");
// throws lexical error
parser.parse("adfe34bc zxg");
私の質問は、今ASTを取得するにはどうすればよいですか? 入力に対してパーサーを実行できることがわかりますが、機能する場合は true を返し、機能しない場合は失敗します。
記録のために、私は JISON を使用しています: http://zaach.github.com/jison/docs/