Philip Stoev > DBIx-MyParsePP > DBIx::MyParsePP::Lexer

Download:
DBIx-MyParsePP-0.50.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
Report a bug
Source  

NAME ^

DBIx::MyParsePP::Lexer - Pure-perl SQL lexer based on MySQL's source

SYNOPSIS ^

        use DBIx::MyParsePP::Lexer;
        use Data::Dumper;

        my $lexer = DBIx::MyParsePP::Lexer->new(
                string => $string
        );
        
        while ( my $token = $lexer->yylex() ) {

                print Dumper $token;
                
                last if $token->type() eq 'END_OF_INPUT';
                print $lexer->pos();
                print $lexer->line();
        
        }

DESCRIPTION ^

DBIx::MyParsePP::Lexer is a translation of the lexer function from MySQL into pure Perl.

The goal of the translation was to closely follow the method of operation of the original lexer -- therefore performance is suffering at the expense of compatibility. For example, the original character set definitions are used, rather than determining which letter is uppercase or lowercase using a Perl regular expression.

CONSTRUCTOR ^

The following arguments are available for the constructor. They are passed from DBIx::MyParsePP:

string is the string being parsed.

charset is the character set of the string. This is important when determining what is a number and what is a separator in the string. The default value is 'ascii', which is the only charset bundled with DBIx::MyParsePP by default. Please contact the author if you need support for other character sets.

version is the MySQL version to be emulated. This only affects the processing of /*!##### sql_clause */ comments, where ##### is the minimum version required to process sql_clause. The grammar itself is taken from MySQL 5.0.45, which is the default value of version.

sql_mode contains flags that influence the behavoir of the parser. Valid constants are MODE_PIPES_AS_CONCAT, MODE_ANSI_QUOTES, MODE_IGNORE_SPACE, MODE_NO_BACKSLASH_ESCAPES and MODE_HIGH_NOT_PRECEDENCE. The flags can be combined with the | operator. By default no flags are set.

client_capabilities is flag reflecting the capabilities of the client that issued the query. Currently the only flag accepted is CLIENT_MULTI_STATEMENTS, which controls whether several SQL statements can be parsed at once. By default no flags are set.

stmt_prepare_mode controls whether the statement being parsed is a prepared statement. The default is 0, however if this flag is set to 1, multiple SQL statements can not be parsed at once.

METHODS ^

pos() and getPos() return the current character position as counted from the start of the string

getLine() and line() return the current line number.

getTokens() returns a reference to an array containing all tokens parsed so far.

LICENCE ^

This file contains code derived from code Copyright (C) 2000-2006 MySQL AB

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the file named LICENCE for more details.