Re: Parsing SQL Data Definition Language

"Joachim Durchholz" <joachim.durchholz@halstenbach.com.or.de>
6 Mar 2000 23:48:18 -0500

          From comp.compilers

Related articles
Parsing SQL Data Definition Language jsalick@earthlink.net (John Salick) (2000-03-06)
Re: Parsing SQL Data Definition Language joachim.durchholz@halstenbach.com.or.de (Joachim Durchholz) (2000-03-06)
Re: Parsing SQL Data Definition Language dforcier@allaire.com (Darren Forcier) (2000-03-11)
| List of all articles for this month |

From: "Joachim Durchholz" <joachim.durchholz@halstenbach.com.or.de>
Newsgroups: comp.compilers
Date: 6 Mar 2000 23:48:18 -0500
Organization: Compilers Central
References: 00-03-025
Keywords: yacc, Pascal, comment

John Salick <jsalick@earthlink.net> wrote:
>
> I did find an old TurboPascal lex/yacc and ported the generated
> code, but I can't even get the author's example to work.


This is strange. It worked very well for me (years ago, so details are
a bit fuzzy).


> I have found VisualParse++ from Sand-Stone. Any comments. I was
> certainly hoping for something less expensive for a one time use.


You could try flex/bison. These are near-clones of lex/yacc but free
(and specifically don't infect your code with the GPL - the tools
themselves are under GPL, but the generated code isn't).


You could also try ANTLR or any other LL(k) tool; for a non-compiler
expert, it's probably easier to get the grammar right. You could even
use Accent, which will take *any* context-free grammar but won't warn
you if the grammar is ambiguous (and its authors report that it's slower
than other parsing tools - whether this is a factor depends heavily on
the fraction of time that your software spends parsing, and how
important speed is in the first place).


HTH
Joachim
[Nit: flex isn't GPL'ed, it has a Berkeley style license. Berkeley yacc
does, to my taste, everything useful that bison does and is also not
GPL. -John]


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.