The eval side of Ruby
eval("puts 'Hello World'")
output:
Hello World
11391 users tagging and storing useful source code snippets
Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
eval("puts 'Hello World'")
Hello World
#include <stdio.h> typedef struct _operation{ unsigned int op; int arg1; int arg2; int arg3; } operation; typedef struct _scriptEngine{ int var[255]; int ip; int halt; operation code[255]; } scriptEngine; void operation_run(const operation *p, scriptEngine *s){ switch (p->op){ case 0: //add s->var[p->arg1] = s->var[p->arg2]+s->var[p->arg3]; s->ip++; printf("Realizando suma\n"); break; case 1: //sup s->var[p->arg1] = s->var[p->arg2]-s->var[p->arg3]; s->ip++; printf("Realizando resta\n"); break; case 3: //mul s->var[p->arg1] = s->var[p->arg2]*s->var[p->arg3]; s->ip++; printf("Realizando multiplicacion\n"); break; case 4: //div s->var[p->arg1] = s->var[p->arg2]/s->var[p->arg3]; s->ip++; printf("Realizando division\n"); break; case 5: //mod s->var[p->arg1] = s->var[p->arg2]%s->var[p->arg3]; s->ip++; printf("Realizando modulo\n"); break; case 6: //set s->var[p->arg1] = p->arg2; s->ip++; printf("Realizando asignacion\n"); break; case 7: //halt s->halt=1; break; case 8: //jump s->ip=s->var[p->arg1]; break; default: break; } } scriptEngine* scriptEngine_new(){ scriptEngine *new_script; new_script = (scriptEngine*) malloc(sizeof(scriptEngine)); new_script->ip=0; new_script->halt=0; return new_script; } void scriptEngine_delete(scriptEngine *script){ free(script); } void scriptEngine_run(scriptEngine *script){ int j; while(script->halt==0){ printf("Inicio de operacion\n"); operation_run(&(script->code[script->ip]),script); printf("Estado de la maquina:\n"); for (j=0;j<5;j++){ printf("Posicion de la memoria %i: %i\n",j,script->var[j]); } } }; void scriptEngine_create_example(scriptEngine *script, int example){ switch (example){ case 0: script->code[0].op=6; //set script->code[0].arg1=0; script->code[0].arg2=10; script->code[1].op=6; //set script->code[1].arg1=1; script->code[1].arg2=20; script->code[2].op=0; //set script->code[2].arg1=2; script->code[2].arg2=0; script->code[2].arg3=1; script->code[3].op=7; break; } } int main(int argc, char **argv){ scriptEngine* script; script = scriptEngine_new(); scriptEngine_create_example(script,0); scriptEngine_run(script); scriptEngine_delete(script); system("PAUSE"); return 0; }