2012-04-23 20 views
5

PostgreSQL'i ayrıştırmak için hangi dilbilgisi kullanılır? LR, LALR, LL veya başka bir şey mi?PostgreSQL'i ayrıştırmak için hangi dilbilgisi kullanılır?

+1

Bir LALR (1) gramerine dayanması olasıdır; Yacc/Bison normalde işte budur. Bazı komplikasyonlar olması muhtemeldir; Bazen SQL dilbilgisi LALR ile başa çıkmak için zor olur (1). –

+3

Çözümleyici için kaynak kodu burada (en son sürüm için) http://git.postgresql.org/gitweb/?p=postgresql.git;a=tree;f=src/backend/parser;h=904b1b0bb8bddc95b422b27a3d44fd826dedf736;hb=REL9_1_STABLE Standart LEX ve YACC tanımları içerir ... – zeFrenchy

cevap

6

PostgreSQL parser, yacc ve lex. Yacc tarafından üretilen ayrıştırıcılar LALR'dir (1). Postgres 'gramer here'u okuyabilirsiniz.

+1

Bu, [8.X sürüm] 'e kadar oldu (http://www.postgresql.org/docs/8.4/static/parser-stage.html). 9+ sürümlerinde PosgreSQL [Bison kullanıyor] (http://www.postgresql.org/docs/9.0/static/parser-stage.html), yani tam-uyumlu uyumlu çözümleyici üreteci. –

İlgili konular