// demo.txt

var main(nirvana,paradise,skazka){
	if(isset(nirvana))return paradise+nirvana+skazka;
	f=getFunction(getThisFunctionName());
	pos=f.Up(f.Root());
	command=command2=f.getCommand(pos);
	trace((string)command + "==" + eval(command));
	trace(command.getSub({}));
	trace(command.getSub({0}));
	trace(command.getSub({0,0}));
	trace(command.getSub({0,1}));
	trace(command.getSub({1}));
	trace("-----------------");
	pos=f.Up(pos);
	command=f.getCommand(pos);
	trace((string)command + "==" + eval(command));
	trace(command.getSub({}));
	trace(command.getSub({0}));
	trace(command.getSub({0,2}));
	trace(command.getSub({0,4}));
	trace(command.getSub({0,4,0}));
	trace(command.getSub({0,4,3}));
	trace(command.getSub({0,4,3,0}));
	trace(command.getSub({0,4,3,1}));
	trace(command.getSub({1}));
	trace("-----------------");
	proga=PROGRAM("X=#+#");
	trace(proga);
	proga.setSub({1,0},command);
	proga.setSub({1,1},command2);
	trace(proga);
	eval(proga);
	trace("X=="+X);
	getstring();
	return;
	{0,1,2,3,main(100,20,7-3)}[4];
	(1+9)*100;
}
