summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichal Čihař <michal@cihar.com>2017-04-03 09:13:09 +0200
committerMichal Čihař <michal@cihar.com>2017-04-03 09:13:09 +0200
commit511484382e0ed838888390cd4f6ae205cb1dea18 (patch)
treebe5be5a3f1fb4daad94acf10ec7e9b2afa9b6844 /src
parentf3f36d26dd41d0d979a9b937ca0712f7fc3427e7 (diff)
downloadsql-parser-511484382e0ed838888390cd4f6ae205cb1dea18.zip
sql-parser-511484382e0ed838888390cd4f6ae205cb1dea18.tar.gz
sql-parser-511484382e0ed838888390cd4f6ae205cb1dea18.tar.bz2
Add utility to tokenize query
It's mostly useful for debugging changes in parser. See #147. Signed-off-by: Michal Čihař <michal@cihar.com>
Diffstat (limited to 'src')
-rw-r--r--src/Utils/CLI.php50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/Utils/CLI.php b/src/Utils/CLI.php
index dbf80aa..0857d6e 100644
--- a/src/Utils/CLI.php
+++ b/src/Utils/CLI.php
@@ -130,4 +130,54 @@ class CLI
return 1;
}
+
+ public function usageTokenize()
+ {
+ echo "Usage: tokenize-query --query SQL\n";
+ }
+
+ public function parseTokenize()
+ {
+ $longopts = array('help', 'query:');
+ $params = $this->getopt(
+ 'hq:', $longopts
+ );
+ $this->mergeLongOpts($params, $longopts);
+
+ return $params;
+ }
+
+ public function runTokenize()
+ {
+ $params = $this->parseTokenize();
+ if ($params === false) {
+ return 1;
+ }
+ if (isset($params['h'])) {
+ $this->usageTokenize();
+
+ return 0;
+ }
+ if (isset($params['q'])) {
+ $lexer = new Lexer($params['q'], false);
+ foreach ($lexer->list->tokens as $idx => $token) {
+ echo '[TOKEN ', $idx, "]\n";
+ echo 'Type = ', $token->type, "\n";
+ echo 'Flags = ', $token->flags, "\n";
+ echo 'Value = ';
+ var_export($token->value);
+ echo "\n";
+ echo 'Token = ';
+ var_export($token->token);
+ echo "\n";
+ echo "\n";
+ }
+
+ return 0;
+ }
+ echo "ERROR: Missing parameters!\n";
+ $this->usageTokenize();
+
+ return 1;
+ }
}