Re: Perl 5.12 complains about ecpg parser-hacking scripts
От | Andy Colson |
---|---|
Тема | Re: Perl 5.12 complains about ecpg parser-hacking scripts |
Дата | |
Msg-id | 4D3C6092.3010503@squeakycode.net обсуждение исходный текст |
Ответ на | Re: Perl 5.12 complains about ecpg parser-hacking scripts (Andrew Dunstan <andrew@dunslane.net>) |
Ответы |
Re: Perl 5.12 complains about ecpg parser-hacking scripts
(Tom Lane <tgl@sss.pgh.pa.us>)
|
Список | pgsql-hackers |
On 01/23/2011 10:06 AM, Andrew Dunstan wrote: > > > On 01/23/2011 10:16 AM, Andy Colson wrote: >> On 01/23/2011 08:29 AM, Andy Colson wrote: >>> On 01/22/2011 09:28 PM, kris@shannon.id.au wrote: >>>> On 23 January 2011 13:14, Andrew Dunstan<andrew@dunslane.net> wrote: >>>>> But there are quite a few perlheads around. ISTR Matt Trout was muttering >>>>> about these scripts on IRC recently. >> >> Ok, so I've figured out what its purpose is. >> >> Are there other problems with this script? Does it not pull out the rule names correct all the time or something? Whatproblem was Matt having with it? >> >> I think rewriting from scratch is overkill, unless this script is just failing. The code to pull the rule names out isa bit complex, and it seems to work, so I'd rather not touch it. >> >> Are there other things you wished this script did? (reports, counts, etc) >> >> > > > It's doing the right thing. But it's really spaghetti code, generated by a2p. Matt was just (rightly) offended by the $[setting, IIRC. > > The point is that it's close to being totally unmaintainable. > > But if you think you can remedy it without rewriting it, go for it. > > I think minimum requirements would be: > > * avoid setting $[ > * use strict; > * comments saying what it's actually doing > > > We want to be in a situation where of it ever does break because of some external change, we're not left having to wadethrough the crap to find out how to fix it. > > cheers > > andrew ** OOPS, forenote: I only noticed check_rules.pl. That's the only file I looked at. I'll go look at parse.pl right now. Below refers to check_rules.pl only. I can comment the code. $[ can safely be removed (from check_rules.pl) because we are not even using arrays. I disagree (check_rules.pl) is not spaghetti code. There are two loops, one thru gram.y to pick out the rule names, andone through ecpg.addons to make sure they are in use. Unmaintainable is another story. Parsing gram.y for rule names, then combining them to make up the same name in ecpg.addonsis a little complex. But then I think it would be a little complex in any language. A little change to the syntax/layoutof either file and it could go bad, but you'd have that same problem with any other language too. Is there anyway to make bison/yacc/gcc/etc spit out the rule names? I'm not sure rule name is the proper words. In gram.y we have: stmt : AlterDatabaseStmt | AlterDatabaseSetStmt We pull out and create: stmtAlterDatabaseStmt and stmtAlterDatabaseSetStmt -Andy
В списке pgsql-hackers по дате отправления: