Re: [HACKERS] [OT] flex, yacc, and bison

Поиск
Список
Период
Сортировка
От Michael Alan Dorman
Тема Re: [HACKERS] [OT] flex, yacc, and bison
Дата
Msg-id 871zd0oj8a.fsf@juliet.private.net
обсуждение исходный текст
Ответ на Re: [HACKERS] [OT] flex, yacc, and bison  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Tom Lane <tgl@sss.pgh.pa.us> writes:
> "Jackson, DeJuan" <djackson@cpsgroup.com> writes:
> > I need to parse this format:
> > <Database ftpdatabase [hostname[:port]]>
> >  [<DatabaseID somebody>]
> >  [<DatabasePWD mypwd>]
> >  [<Table ftp_users>
> >   [<Uname uname>]
> >   [<CryptedPwd cryptedpwd>]
> >   [<FtpPath ftppath>]
> >  </Table>]
> > </Database>
> 
> That looks suspiciously like an SGML DTD to me...

Well, it could almost kind of be SGML, but as specified, there's no
way it could possibly be XML (attributes have to have values, a couple
of other things), which is unfortunate, since that's where all the
cool tools are being developed these days.

> Rather than doing the whole lex/yacc bit, I'd suggest finding some
> ready-made SGML-parsing tools.  For instance, if you are handy with
> Perl I think there are some SGML modules in CPAN ... certainly there
> are HTML parsers, which'd probably be easy to adapt to the purpose.

I agree with Tom that you try to find existing parsers tuned towards
this stuff, with the addition that you do your self a favor (if you
have the option to change the format), and change it to be something
that can be parsed as XML.

You don't mention what this is for, but if you're able to move to XML,
you can use Perl (which I personally prefer), Python, TCL, or even one
of several C libraries (expat or rxp or GNOME's libxml) that are
suprisingly easy to use, given that text hacking is not something that
is traditionally easy to do in C.  The possibilities are much broader.

Mike.


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Egon Schmid
Дата:
Сообщение: Re: [HACKERS] [OT] flex, yacc, and bison
Следующее
От: "Jackson, DeJuan"
Дата:
Сообщение: RE: [HACKERS] [OT] flex, yacc, and bison