2012-04-23 28 views
5

Loại ngữ pháp nào được sử dụng để phân tích cú pháp PostgreSQL? Nó là LR, LALR, LL, hay cái gì khác?Loại ngữ pháp nào được sử dụng để phân tích cú pháp PostgreSQL?

+1

Có thể dựa trên ngữ pháp LALR (1); đó là những gì Yacc/Bison xử lý bình thường. Có thể có một số biến chứng trong đó; đôi khi ngữ pháp SQL trở nên khó xử lý với LALR (1). –

+3

Mã nguồn cho trình phân tích cú pháp có tại đây (cho phiên bản mới nhất) http://git.postgresql.org/gitweb/?p=postgresql.git;a=tree;f=src/backend/parser;h=904b1b0bb8bddc95b422b27a3d44fd826dedf736;hb=REL9_1_STABLE Nó chứa các định nghĩa chuẩn LEX và YACC ... – zeFrenchy

Trả lời

6

PostgreSQL parser được dựa trên yacc và lex. Các trình phân tích cú pháp được tạo bởi yacc là LALR (1). Bạn có thể đọc ngữ pháp của postgres here.

+1

Điều này xảy ra cho đến [8.X phiên bản] (http://www.postgresql.org/docs/8.4/static/parser-stage.html). Trong hơn 9 phiên bản PosgreSQL [đang sử dụng Bison] (http://www.postgresql.org/docs/9.0/static/parser-stage.html), đó là trình tạo trình phân tích cú pháp tương thích đầy đủ yacc. –

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