Generování PHP kódu a la NEON

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Climber007
Člen | 105
+
0
-

Píšu si vlastní podpůrný jazyk (používaný např. jako vzorce v Excelu – v tabulkách) a potřebuju jej nějak efektivně vyhodnocovat. Chtěl bych se inspirovat zpracováním NEON souborů do nativního PHP kódu a ušetřit tak výkon namísto složité intepretace vlastním PHP interpretem.

Našel by se někdo, kdo mi osobně zodpoví pár otázek, jak funguje generování tříd z NEONu? Jde mi čistě o výsledný PHP kód, který bude možná vyhodnotit (třeba pomocí exec()). Parsování není problém.

Climber007
Člen | 105
+
0
-

Díky moc! Vypadá slibně. Nicméně jsem měl mít v bakalářce něco málo svého a tohle mi to hodně ulehčí :-D

Edit: Umí Tokenizer elegantně pracovat s formáty s odsazením? Moje chyba. Samozřejmě, že neumí, to je věcí KA a parseru.

Edit 2: Jak je to s vykonáním následujícího PHP kódu? Jak to třeba řeší Nette? Asi těžko voláním eval(), ne? nemůžu to v tom nějak najít.

Editoval Climber007 (16. 4. 2014 19:27)

greeny
Člen | 405
+
0
-

Řeší se to uložením do temp souboru a následně require, viz https://api.nette.org/…tor.php.html#171 . Pokud to potřebuješ mimo objektové rozhraní, postačí:

<?php

class A {
	function b() {
		call_user_function(function(){
			require "file.php";
		});
	}
}
?>

Editoval greeny (16. 4. 2014 19:43)

Climber007
Člen | 105
+
0
-

Paráda, čekal jsem to tak nějak, ale díky moc za naprosto názorné použití! +1