Hello Fellow Monks,
I am trying to use Parse::RecDescent to parse Sql as well. I am trying to parse the sql into (placeholder / comment). Basically if I have 'select * from foo where bar = ? --This is a comment', I want to capture the 'select * from foo where bar = ?' and then '--This is a comment'. Here is the grammar,
$parser = new Parse::RecDescent (q{
startrule : PlaceHolder Comment | PlaceHolder
Comment : DD_Style
DD_Style : m{(\s+?--.*$)}
{ print "Comment : \n\t", $item[1], "\n\n" }
PlaceHolder : Xopen | Sprintf
Sprintf : /.*=\s+?%s.*?/
{ $item[1] =~ s{%s}{%%s}g;
print "After : \n\t", $item[1], "\n\n" }
Xopen : /.*=\s+?\?.*?/
{ $item[1] =~ s{\?}{%s}g;
print "After : \n\t", $item[1], "\n\n" }
}) unless $parser;
I set RD_TRACE on and see that is matches,
Select name from foo_name where id = ? ,
but does not match the '--This is a Comment'
I know I am missing something obvious, but I can't find it.
Any help would by much appreciated!
STH