<?php
header("Content-Type: text/plain; charset=UTF-8");
require_once "classes/parser/tokenizer.php";
// splits an string into 'words'
// Note that you DO NOT NEED to write an explicit regular expression. Instead of typing "/^\s*\w+/" we can write "\w+".
// In this case, the function ignores the left spaces and start searching from the current offset position.
$t = new Tokenizer("Lorem ipsum dolor sit amet");
while (list($token) = $t->match("\w+")) {
echo "$token-";
}
echo "\n";
// In any case, you can still use explicit regular expressions:
$t = new Tokenizer("I'm 35 years old");
if (list($years) = $t->match("/\d+/")) {
echo "You are $years old\n";
}
// flags example.
// OFFSET_CAPTURE: retrieves offset positions
// CASE_SENSITIVE: switches to 'case sensitive' mode
// SEARCH_ANYWHERE: start searching from any position
$t = new Tokenizer("select * From table where id = 100", Tokenizer::OFFSET_CAPTURE|Tokenizer::CASE_SENSITIVE|Tokenizer::SEARCH_ANYWHERE);
if ($t->match("From\s+(\w+)", $matches)) {
print_r($matches);
}
// parses a basic SQL sentence
$t = new Tokenizer("Select Id, Name, Age From users Where Id = 101");
if ($t->match("select")) {
// columns
$columns = array();
while (list($column) = $t->match("\w+")) {
array_push($columns, $column);
if (!$t->match(",")) {
break;
}
}
// 'from' clause
if ($t->match("from\s+(\w+)", $matches)) {
$table_name = $matches[1];
echo "You want to get the columns " . implode(", ", $columns) . " from the table $table_name.\n";
}
}
// splits a phrase into tokens
$t = new Tokenizer("Look at my horse, my horse is amazing");
while (list($token) = $t->token()) {
echo "$token-";
}
echo "\n";
// is the next token equal to a given string?
$t = new Tokenizer("Lorem Ipsum Dolor");
if (list($str) = $t->eq("lorem ipsum dolor")) {
echo "$str Sit Amet\n";
}
// is the next token a number?
$t = new Tokenizer("125.48E-4");
if (list($number) = $t->number()) {
echo "Yes, it is a float number: $number\n";
}
// is the next token a string?
$t = new Tokenizer(' "Houston, we have a \"problem\"." ');
if (list($str) = $t->str()) {
echo "Yes, is is a string: $str\n";
}
// and the next, is a string?
$t = new Tokenizer(" 'Look at my horse, my \'horse\' is amazing' ");
if (list($str) = $t->str()) {
echo "Yes, is is a string too: $str\n";
}
// is the next token an identifier?
$t = new Tokenizer("Id: hello093");
if ($t->eq("Id:") && list($id) = $t->identifier()) {
echo "Yes, it is an identifier: $id\n";
}
|