summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRadosław Kowalewski <rk@srsbiz.pl>2019-04-19 09:49:51 +0200
committerRadosław Kowalewski <rk@srsbiz.pl>2019-04-19 09:49:51 +0200
commit3adf389870cc6b3c9cf7dd279a3f253d02e1ad64 (patch)
treefff9d251aeea3ecfdf71b1f2dca8dae8ce5d74f0 /src
parent0eb16ef5e3acacbc792be336754e42d98791a33f (diff)
downloadsql-parser-3adf389870cc6b3c9cf7dd279a3f253d02e1ad64.zip
sql-parser-3adf389870cc6b3c9cf7dd279a3f253d02e1ad64.tar.gz
sql-parser-3adf389870cc6b3c9cf7dd279a3f253d02e1ad64.tar.bz2
Recognize question mark as parameter, add formatter for parameters
Diffstat (limited to 'src')
-rw-r--r--src/Context.php2
-rw-r--r--src/Lexer.php2
-rw-r--r--src/Utils/Formatter.php7
3 files changed, 9 insertions, 2 deletions
diff --git a/src/Context.php b/src/Context.php
index 869a9bb..61fc2b1 100644
--- a/src/Context.php
+++ b/src/Context.php
@@ -389,7 +389,7 @@ abstract class Context
return Token::FLAG_SYMBOL_VARIABLE;
} elseif ($str[0] === '`') {
return Token::FLAG_SYMBOL_BACKTICK;
- } elseif ($str[0] === ':') {
+ } elseif ($str[0] === ':' || $str[0] === '?') {
return Token::FLAG_SYMBOL_PARAMETER;
}
diff --git a/src/Lexer.php b/src/Lexer.php
index ef1ca68..3d33b91 100644
--- a/src/Lexer.php
+++ b/src/Lexer.php
@@ -872,7 +872,7 @@ class Lexer extends Core
$flags |= Token::FLAG_SYMBOL_SYSTEM;
}
} elseif ($flags & Token::FLAG_SYMBOL_PARAMETER) {
- if ($this->last + 1 < $this->len) {
+ if ('?' !== $token && $this->last + 1 < $this->len) {
++$this->last;
}
} else {
diff --git a/src/Utils/Formatter.php b/src/Utils/Formatter.php
index c41c69c..d89a5ce 100644
--- a/src/Utils/Formatter.php
+++ b/src/Utils/Formatter.php
@@ -227,6 +227,13 @@ class Formatter
),
array(
'type' => Token::TYPE_SYMBOL,
+ 'flags' => Token::FLAG_SYMBOL_PARAMETER,
+ 'html' => 'class="sql-parameter"',
+ 'cli' => "\x1b[31m",
+ 'function' => '',
+ ),
+ array(
+ 'type' => Token::TYPE_SYMBOL,
'flags' => 0,
'html' => 'class="sql-variable"',
'cli' => "\x1b[36m",