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

Спецвыпуск Хакер, номер #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  Содержание

ttfb: 2.1121501922607 ms