Article View: pl.comp.lang.perl
Article #52439SQL parser
From: hubert depesz lubaczewski
Date: Tue, 31 Jul 2012 12:26
Date: Tue, 31 Jul 2012 12:26
37 lines
1960 bytes
1960 bytes
Hej,
jakiś czas temu szukałem kogoś kto mnie nauczy parsowania
( https://groups.google.com/forum/#!topic/pl.comp.lang.perl/G9Wc7T4rV2c)
Zgłosił się Dozzie, za co mu dziękuję.
W oparciu o to czego mnie nauczył, piszę moduł do parsowania sql'i
(zapytań).
Od razu: nie, SQL::Parser nie jest akceptowalny, i jego modyfikacje nie
wchodzą w grę.
Mój parser, nie gotowy, i bardzo daleki od gotowości:
https://github.com/depesz/Pg-SQL-Parser
Na razie umie jedynie sparsować najprostsze zapytania typu:
select 1;
select 'a' as b;
Ja to sobie *powoli* rozwijam, ale jeśli ktoś z was ma czas by podesłać
poprawki/komentarze - byłbym wdzięczny.
Ogólnie - ten post ma służyć pokazaniu, że nad tym pracuję, może ktoś
się zainteresuje, a może ktoś przejrzy kod i powie mi co można zrobić
lepiej/efektywniej.
Wiem, że regexpy w lexerze można zapisać jako pojedynczy - i pewnie tak
zrobię, ale na razie chodzi mi o czytelność - bo jak będę zamieniał na
jeden, to na taki z Regexp::Optimizer - a on jest mało czytelny, za to
szybki.
depesz
--
The best thing about modern society is how easy it is to avoid contact with it.
http://depesz.com/
Technical Details
Message-ID:
<9gvke9-9ag.ln1@depesz.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: hubert depesz lubaczewski <depesz@depesz.com> Newsgroups: pl.comp.lang.perl Subject: SQL parser Date: Tue, 31 Jul 2012 14:26:17 +0200 Organization: depesz Software Lines: 37 Message-ID: <9gvke9-9ag.ln1@depesz.com> Reply-To: depesz@depesz.com NNTP-Posting-Host: andy.depesz.com Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1343738136 24169 88.198.47.100 (31 Jul 2012 12:35:36 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Tue, 31 Jul 2012 12:35:36 +0000 (UTC) X-User: depesz_hdl User-Agent: slrn/pre1.0.0-18 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit