2012-04-23 13 views
5

Quale tipo di grammatica viene utilizzata per analizzare PostgreSQL? LR, LALR, LL o qualcos'altro?Quale tipo di grammatica viene utilizzata per analizzare PostgreSQL?

+1

È probabile che sia basato su una grammatica LALR (1); questo è ciò che Yacc/Bison gestisce normalmente. Ci sono probabilmente alcune complicazioni in questo; a volte la grammatica SQL diventa difficile da gestire con LALR (1). –

+3

Il codice sorgente per parser è qui (per l'ultima versione) http://git.postgresql.org/gitweb/?p=postgresql.git;a=tree;f=src/backend/parser;h=904b1b0bb8bddc95b422b27a3d44fd826dedf736;hb=REL9_1_STABLE Contiene definizioni standard LEX e YACC ... – zeFrenchy

risposta

6

Il PostgreSQL parser è basato su yacc e Lex. I parser generati da yacc sono LALR (1). Puoi leggere la grammatica di Postgres here.

+1

Questo era fino alla [versione 8.X] (http://www.postgresql.org/docs/8.4/static/parser-stage.html). Nelle versioni 9+ PosgreSQL [sta usando Bison] (http://www.postgresql.org/docs/9.0/static/parser-stage.html), che è un generatore di parser compatibile con full-yacc. –

Problemi correlati