]> granicus.if.org Git - postgresql/commit
Add simple script to check for right recursion in Bison grammars.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Oct 2011 17:50:57 +0000 (13:50 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 27 Oct 2011 17:50:57 +0000 (13:50 -0400)
commit756a4ed5ad3e57c26a247234de371a6ca21806cd
tree2134e627df4b72f4288eeb2419e9998ac9df6dad
parentbf82013631e32436c9abb23fee8be0a4ce46b3dd
Add simple script to check for right recursion in Bison grammars.

We should generally use left-recursion not right-recursion to parse lists.
Bison hasn't got any built-in way to check for this type of inefficiency,
and I didn't find anything on the net in a quick search, so I wrote a
little Perl script to do it.  Add to src/tools/ so we don't have to
re-invent this wheel next time we wonder if we're doing anything stupid.

Currently, the only place that seems to need fixing is plpgsql's stmt_else
production, so the problem doesn't appear to be common enough to warrant
trying to include such a test in our standard build process.  If we did
want to do that, we'd need a way to ignore some false positives, such as
a_expr := '-' a_expr
src/tools/check_bison_recursion.pl [new file with mode: 0755]