Создай язык сам, или конструктор для программиста

Спецвыпуск Хакер, номер #004, стр. 004-066-3

PLC_ExecExpression(PLC_TOK_Anchor(Expression1));

while(1)

{

if(Expression2!=NULL)

{

PLC_ExecExpression(PLC_TOK_Anchor(Expression2));

if(!PLC_DT_GetBool(&PLC_Result)) break;

}

PLC_ExecStatement(Statement,NULL);

if(PLC_FlowStatus==PLC_FLOW_BREAK) {PLC_FlowStatus=PLC_FLOW_NORMAL; break;}

else if(PLC_FlowStatus==PLC_FLOW_RETURN || PLC_FlowStatus==PLC_FLOW_GOTO)break;

else if(PLC_FlowStatus==PLC_FLOW_CONTINUE) PLC_FlowStatus=PLC_FLOW_NORMAL;

PLC_ExecExpression(PLC_TOK_Anchor(Expression3));

}

break;

// GOTO

case TT_KEY_GOTO:

PLC_SYMBOL *Symbol=(PLC_SYMBOL*)PLC_TOK_Pointer(Token);

Symbol=PLC_SymbolSearch(Symbol->Name,0,false);// atp-search local scope only!

if(Symbol==NULL || Symbol->LabelTarget==NULL) PLC_Err(PLC_ERR_UNKNOWN_LABEL_s,((PLC_SYMBOL*)PLC_TOK_Pointer(Token))->Name);

PLC_GotoToken=Symbol->LabelTarget;

PLC_FlowStatus=PLC_FLOW_GOTO;

break;

}

}

Точно так же в процедуре ApplyOperator() оставляются только пункты, отвечающие за арифметику и операции сравнения. А процедуру PLC_C_Init() нужно оставить неизмененной. Теперь осталось только перекомпилировать пример и попробовать какую-нибудь простенькую прогу:

10 PRINT "Я ЭТО СДЕЛАЛ!"

20 GOTO 20

Все довольно просто, если учиться на примерах. Теперь твоя очередь. Уверен: посидишь недельку - и сам напишешь свой собственный дельфи :). Желаю удачи!

Частенько бывает, что в Сети находишь материалы, ценность которых поначалу неочевидна. Иногда в поисках чего-нибудь этакого бродишь по софтверно-даунлоадному сайту и ничегошеньки на нем вроде бы хорошего нет. Другое дело, когда кто-нибудь рассказывает про крутую фишку, скачанную в течение бессонной ночи с какого-нибудь зимбабвийского сервера или стащенную прямо под носом у тамошнего растяпы-админа. В этот раз все было не столь романтично - редактор нашего журнала рассказал мне о классной проге, которая якобы была найдена им на www.softseek.com и которая позволяет создавать языки самому. Честно признаюсь, доселе не видел ни одной программы, которая позволяла бы создавать языки и потом на них что-нибудь писать. Любопытство поразило меня в то самое место, на которое я так часто нахожу приключения, и я не смог удержаться - сказал, что берусь поведать начинающим хакерам про эту сказочную утилитку. Так, вооружившись компьютером, момедом и купленными по случаю часами Интернета, я позволил вовлечь себя в эту авантюру. Итак, загрузившись на www.softseek.com и пошарив по разным каталогам, я все-таки нашел меченую моим редактором прогу. Затем я смело шагнул навстречу опасности, нажав на "download".

Назад на стр. 004-066-2  Содержание

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001