X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser%2FSybase.pm;h=e3fd943337d9053e24d10556bb3cf90bfa1693a8;hb=aa4301a7a673eb7206bb6c837a2adaaf33d9c6d9;hp=cf8e0634b40ec3ea59013f5dffdc8c954e873d5c;hpb=0c04c5a2210135419771878dc7e341a1cba52cca;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Parser/Sybase.pm b/lib/SQL/Translator/Parser/Sybase.pm index cf8e063..e3fd943 100644 --- a/lib/SQL/Translator/Parser/Sybase.pm +++ b/lib/SQL/Translator/Parser/Sybase.pm @@ -20,22 +20,18 @@ DBI-Sybase parser included with SQL::Translator. use strict; use warnings; -our ( $DEBUG, $GRAMMAR, @EXPORT_OK ); our $VERSION = '1.59'; + +our $DEBUG; $DEBUG = 0 unless defined $DEBUG; use Data::Dumper; -use Parse::RecDescent; -use Exporter; -use base qw(Exporter); - -@EXPORT_OK = qw(parse); +use SQL::Translator::Utils qw/ddl_parser_instance/; -$::RD_ERRORS = 1; -$::RD_WARN = 1; -$::RD_HINT = 1; +use base qw(Exporter); +our @EXPORT_OK = qw(parse); -$GRAMMAR = q{ +our $GRAMMAR = <<'END_OF_GRAMMAR'; { my ( %tables, @table_comments, $table_order ); @@ -289,19 +285,20 @@ COMMA : ',' QUOTE : /'/ -}; +END_OF_GRAMMAR sub parse { my ( $translator, $data ) = @_; - my $parser = Parse::RecDescent->new($GRAMMAR); + + # Enable warnings within the Parse::RecDescent module. + local $::RD_ERRORS = 1 unless defined $::RD_ERRORS; # Make sure the parser dies when it encounters an error + local $::RD_WARN = 1 unless defined $::RD_WARN; # Enable warnings. This will warn on unused rules &c. + local $::RD_HINT = 1 unless defined $::RD_HINT; # Give out hints to help fix problems. local $::RD_TRACE = $translator->trace ? 1 : undef; local $DEBUG = $translator->debug; - unless (defined $parser) { - return $translator->error("Error instantiating Parse::RecDescent ". - "instance: Bad grammer"); - } + my $parser = ddl_parser_instance('Sybase'); my $result = $parser->startrule($data); return $translator->error( "Parse failed." ) unless defined $result;