你好 ganymede,
ich möchte (mit PHP5) Ausdrücke der folgenden Form in entsprechende SQL-Anweisungen übersetzen:
_and_(value1,_not_(value2,value3))
Zu:
column LIKE '%value1%' AND NOT (column LIKE '%value2%' OR column LIKE '%value3%')
Nach deiner Definition müsste es eher so aussehen:
_and_(value1,_not_(_or_(value2,value3)))
Ich habe bei PEAR schon PHP_LexerGenerator und PHP_ParserGenerator entdeckt. Ich hoffe aber auf eine etwas einfachere Lösung, da die Syntax, die ich verwenden will absolut schlicht ist:
_and_(expr1, expr2, expr3, ...)
_or_(expr1, expr2, expr3, ...)
_not_(expr1)Expressions können wiederum _and_, _or_ und _not_ oder aber Variablennamen sein (im Beispiel oben 'value1' etc.)
Naja, durch die Syntax liegt der Code ja schon in (serialisierter) Baum-Form vor. Da musst du ja nur noch einen (einfachen) Lexer schreiben, dann kannst du das mit einer einfachen Rekursion direkt umsetzen nach SQL.
Wo ist denn dein konkretes Problem?
再见,
克里斯蒂安
http://wwwtech.de/
IRC-Clients und Irssi-Scripting | Flyspray
Q: God, root, what's the difference?
A: God is merciful.