Tôi đã đọc "toàn bộ internet", nhưng không thể tìm thấy bất kỳ ví dụ nào về việc nhận cây cú pháp (giống như trong Esprima) từ nguồn TypeScrypt. Ý tôi là làm thế nào tôi có thể nhận được đối tượng như thế này (Esprima Parser dụ)TypeScript: lấy cây cú pháp
{
"type": "Program",
"body": [
{
"type": "VariableDeclaration",
"declarations": [
{
"type": "VariableDeclarator",
"id": {
"type": "Identifier",
"name": "answer"
},
"init": {
"type": "BinaryExpression",
"operator": "*",
"left": {
"type": "Literal",
"value": 6,
"raw": "6"
},
"right": {
"type": "Literal",
"value": 7,
"raw": "7"
}
}
}
],
"kind": "var"
}
]
}
từ mã javascript
var answer = 6 * 7;
chỉ cho văn bản nguồn nguyên cảo?
P.S. Tôi hy vọng rất nhiều vì sự giúp đỡ của bạn, bởi vì tôi không muốn viết chiếc xe đạp khủng khiếp của riêng bạn)
P.P.S. Tôi nghĩ rằng các tập tin typescript.ts lib (.js) và typescriptServices.ts (.js) để giúp tôi, nhưng tôi không biết làm thế nào :(
Giải Quyết
Cảm ơn rất nhiều cho người dùng Steve . Fenton Đây là mã của tôi, nếu có ai quan tâm đến:.
// uses
var typeScriptLS = new Harness.TypeScriptLS();
var ServicesFactory = new Services.TypeScriptServicesFactory();
var serviceShim = ServicesFactory.createLanguageServiceShim(typeScriptLS);
// add lib.d.ts
var _libText = window.document.getElementById('lib.d.ts').innerText;
typeScriptLS.addScript('lib.d.ts', _libText.replace(/\r\n?/g,"\n"), true);
// add greeter.ts
var _sourceText = window.document.getElementById('greeter.ts').innerText;
typeScriptLS.addScript('greeter.ts', _sourceText.replace(/\r\n?/g,"\n"), true);
// script name
var _scriptName = 'greeter.ts';
// get syntax tree
var _st = serviceShim.languageService.getSyntaxTree(_scriptName);
//console.log(_st);
console.log(JSON.stringify(_st, "", 2));
đâu là 'Harness' quy định tại các tập tin được triển khai? Tôi không thấy "Khai thác" ở bất kỳ đâu trong tsc.js, typescript.js hoặc typescriptServices.js. Hoặc rộng hơn, làm thế nào để bạn chạy mẫu mã đã giải quyết này? –
Tôi xin lỗi nếu bạn đã chờ đợi./src/harness/ trên https://github.com/Microsoft/TypeScript. Nhưng bây giờ mã của tôi có thể trở thành không hợp lệ – bukvaG
Có thể trùng lặp của [Làm thế nào chúng ta có thể nhận được cây cú pháp của TypeScript?] (Http://stackoverflow.com/questions/18714501/how-can-we-get-the-syntax-tree- of-typescript) – ColinE