| 
<?php
/**------------------------------------------------------------------------------
 * Title:        Usage example of the Pragmatic BNF-a-like parser
 * Filename:     example_sql.php
 * Version:      0.2
 * Author:       Richard Keizer
 * Email:        ra dot keizer at gmail dot com
 *-------------------------------------------------------------------------------
 * COPYRIGHT (c) 2011 Richard Keizer
 *
 * The source code included in this package 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. This license can be
 * read at:
 *
 * http://www.opensource.org/licenses/gpl-license.php
 *
 * 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 for more details.
 *------------------------------------------------------------------------------
 *
 *
 * the SQL grammar used herein is just a small subset of the
 * real deal, it just serves as an example how to write a grammar file.
 *
 * note    Parts of the regex used by the tokenizer come from an unknown source.
 *         I rewrote it to fit my needs, I hope I don't violate anyones license.
 *         pls contact me to get proper credits!
 *
 */
 
 error_reporting(E_ALL);
 ini_set('display_errors', 1);
 
 
 include_once 'parser.class.php';
 include_once 'SQL/SQLLexer.class.php';
 
 $parser = new Parser(
 new Grammar(file_get_contents('SQL/sql.grammar.txt')),
 new SQLLexer('SELECT a,b,c FROM BOOKSTORE.authors WHERE (age<150) OR (lastname IN ("Verne", "Dickens"))')
 );
 echo $parser->createParsetree()->saveXML();
 
 
 
 |