rendered paste bodyalias void* delegate(void* delegate()[]) precedure;
alias void* function(void* delegate()[]) precedureFunction;
struct _scope{
precedure[char[]] descriptions;
_scope* parent;
precedure getFunc(char[] operator){
if(precedure* func = operator.isIn())
return *func;
else if(operator.isNumeric()){
writefln(operator.toInt());
return cast(precedure){return cast(void*)operator.toInt();};
}
else
return cast(precedure){return cast(void*)operator;};
}
precedure* isIn(char[] operator){
if(precedure* func = operator in descriptions)
return func;
else{
if(parent)
return parent.isIn(operator);
else
return null;
}
}
void add(char[] operator, precedure lamda){
descriptions[operator] = lamda;
}
void add(char[] operator, precedureFunction lamda){
void* execute(void* delegate()[] args){
return lamda(args);
}
add(operator, &execute);
}
}