[Phpmyadmin-devel] SQL parser

Robin Johnson robbat2 at fermi.orbis-terrarum.net
Mon Jul 22 12:02:01 CEST 2002


On Mon, 22 Jul 2002, Div Loïc wrote:

> Robin, I've just have had a look at the last
> version of your parser. Here is some PHP3
> problems i've noticed:
>
> - function must be declared before they are
>   called. Then, for example, you can't call
>   "PMA_sqlParser_ArrayAdd_Timer()" in the
>   "PMA_sqlParser_ArrayAdd()" function because
>   the former is declared after the latter;
How does one deal with recursive functions then ?
PMA_sqlParser_isEscaped() used to be recursive, but I found it slightly
faster as iterative (not that much).

> - "include_once" and "require_once" are PHP4
>   functions;
> - "===" and "!==" are PHP4 operators.
How does one then properly evaluate some expressions?
$f = FALSE;
$g = 0

($f == FALSE) -> true
($g == FALSE) -> true
($f === FALSE) -> true
($g === FALSE) -> false

My code relies on this difference, as some of the PHP functions (strpos
namely) return FALSE for not found, and integers [0-strlen).

In that case, a 0 is the first position of the string, which is distinctly
different from FALSE.

One of your changes:
 function PMA_sqlParser_strInStr($needle,$haystack)
 {
-    return (strpos($haystack,$needle) !== FALSE);
-}
+    return (strpos(' ' . $haystack, $needle) > 0);
+} // end of the "PMA_sqlParser_strInStr()" function

Actually breaks the function, stopping it from recognizing some things.

> Some coding standard fixes also :
>
> - settings of function should be separated by
>   ", " (comma plus a space character);
>
> - keywords for control structures should be separated
>   from the condition by a space ie:
>       if (condition) {
>           do some stuff
>       }
>       else {
>           do some stuff
>       }
Tell me what text editor you are using with what settings, so that I can
work out settings for my vim to do this properly.

The one major problem I've had with all auto-indenting in vim so far is
that sometimes it seems to get out of sync at the end of an array, leaving
me with an extra level of indentation.

> - function names should not contain escaped charcters
>   except after the "PMA" prefix ie "PMA_number_inrange()"
>   should be "PMA_numberInRange".
Ok, I was going to be renaming all of the functions anyway.

> I've modified your "sqlparse.php3" file in order it fits
> PEAR coding standards (excpet comments for function) and
> may run with PHP3. But I can't test it before the end of
> the week. You'll find it attached to this message.
Your changes _broke_ it on PHP4, so there isn't a chance it work.

-- 
Robin Hugh Johnson
E-Mail     : robbat2 at orbis-terrarum.net
Home Page  : http://www.orbis-terrarum.net/?l=people.robbat2
ICQ#       : 30269588 or 41961639






More information about the Developers mailing list