diff options
author | Michal Čihař <michal@cihar.com> | 2017-04-03 09:13:09 +0200 |
---|---|---|
committer | Michal Čihař <michal@cihar.com> | 2017-04-03 09:13:09 +0200 |
commit | 511484382e0ed838888390cd4f6ae205cb1dea18 (patch) | |
tree | be5be5a3f1fb4daad94acf10ec7e9b2afa9b6844 /src | |
parent | f3f36d26dd41d0d979a9b937ca0712f7fc3427e7 (diff) | |
download | sql-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.php | 50 |
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; + } } |