Déjà, deux trois truc qui ressortent.
Pour ta méthide set_var, c'est quoi toutes ces conditions ? Oo
Tu devrais plutot faire une condition pour voir si c'est un array (dans ce cas, un petit array_merge suffit...

), sinon, c'est forcemment le nom d'une variable et sa valeur (false peut être considérée comme une valeur !). Ainsi, ton elseif, tu peux le remplacer par un else, le premier if, par une detection d'un array, et le dernier else, le barrer
De même, ca fait un peu beaucoup de méthodes, avec tout tes set. C'est là que les blocs et autres joeyuseté du genre sont efficaces... Ou même, de simples variables.
Dans ta méthode de parsage, le if preg_match, bof... Un preg_replace suffit. De même, si il detecte une variable "normale", il va s'arrter là et pas faire le reste... D'ou l'utilité des preg_replace et autres preg_replace_callback.
J'ai la flemme de lire le reste en fait.
conclusion > Pas mal de truc superflus... Mais y'a de l'idée en tout cas. Par contre, ton moteur ne générant pas de fichier cache compilé à la volée, il risque d'être "plutot" lourd. Comme Sékiltoyai, je te recommande PHP dans ton cas
