2013-04-21 23 views
43

Tóm tắt cây cú pháp .. Tôi luôn nghe nói rằng biên dịch với SpiderMonkey AST trên Github.
Vậy, đó có phải là tiêu chuẩn thực tế của cây cú pháp JS không? Và có V8, V8 có sử dụng cùng loại AST không?JavaScript AST là gì, cách chơi với nó?

Tôi có thể chơi bằng cách nào?

+7

Dưới đây là hình dung tiện dụng về thực thi javascript javascript: http://int3.github.io/metajs/ –

Trả lời

22

SpiderMonkey cung cấp số parser api. Đây có lẽ là cách dễ nhất để có được bàn tay của bạn trên các đối tượng cú pháp.

Ngoài ra còn mở js-js parsers như Esprima (đó là ECMAScript, thực sự, nhưng nó phải lên hẻm)

32

1.You có thể có một cái nhìn tại AST explorer. Một công cụ trực tuyến để khám phá các AST được tạo bởi hơn 10 trình phân tích cú pháp. Nó là một công cụ tốt để tìm hiểu cây AST của một ngôn ngữ.
AST explorer source at Github.com.

enter image description here


2.Ngoài ra bạn có thể dán mã js của bạn vào JavaScript AST visualizer và bấm vào nút "show ast", bạn sẽ thấy những AST visully. đang

bản demo js:

function foo(d) { 
    d += 3; 
    return d+999 
} 
function bar(d) { 
    return d*100 
} 

js ast demo

+2

lợi ích của hình ảnh này là gì? Nó có hữu ích không? –

+0

Đây phải là câu trả lời được chấp nhận. :) –

2

Nếu bạn muốn thử ra các phân tích cú pháp ACRON từ giáo sư Marijnh https://github.com/marijnh thử liên kết này: https://astexplorer.net/

Đây là một nhỏ, trình phân tích cú pháp JavaScript nhanh, được viết hoàn toàn bằng JavaScript.

Đã đề cập ở trên JavaScript AST visualizer sử dụng công cụ Esprima và cũng đã được viết bằng JavaScrpt.

JavaScript thống trị trong phân tích cú pháp AST vì các công cụ JavaScript được tối ưu hóa tối đa hiện nay. https://en.wikipedia.org/wiki/JavaScript_engine

Tiêu chuẩn ASTMonkey AST của cây cú pháp JS? V8 có sử dụng cùng loại AST không?

Cả hai công cụ trình duyệt web này đều có xử lý AST bên trong được viết bằng C++. Đây là lý do tại sao mã JavaScrpt sẽ chạy nhanh trong hầu hết các trường hợp ngoại trừ eval.

+0

liên kết video không hợp lệ –

+0

Cảm ơn @JuanPicado, tôi đã xóa liên kết. – prosti

+0

Tôi đã tự hỏi chủ đề của video đó. –

Các vấn đề liên quan