diff --git a/src/execute.c b/src/execute.c index 66224c9..470e850 100644 --- a/src/execute.c +++ b/src/execute.c @@ -21,6 +21,7 @@ typedef enum MINC = '+', MDEC = '-', + PDRAIN = '/', // Haha drain gang PPIPE = '|' } OP; @@ -34,6 +35,15 @@ static void prefix_operator(Stack *stack, char op) switch (op) { + case PDRAIN: + NAME++; + + stack_push(stack, DATA); + + DATA = 0; + + break; + case PPIPE: NAME++; @@ -129,6 +139,9 @@ void execute(Stack *stack, Stack *originstack, char *modname) { prefix_operator(stack, NAME[0]); + if (NAME[0] == '#' || NAME[0] == '$') + NAME++; + if (NAME[0] == '@') continue; @@ -388,25 +401,13 @@ void execute(Stack *stack, Stack *originstack, char *modname) continue; } - if (!strcmp(NAME, "$println")) // arg + if (!strcmp(NAME, "println")) // arg { printf("%s\n", ARG); continue; } - if (!strcmp(NAME, "#println")) // arg - { - printf("%s\n", ARG); - continue; - } - - if (!strcmp(NAME, "$print")) // arg - { - printf("%s", ARG); - continue; - } - - if (!strcmp(NAME, "#print")) // arg + if (!strcmp(NAME, "print")) // arg { printf("%s", ARG); continue; @@ -435,7 +436,7 @@ void execute(Stack *stack, Stack *originstack, char *modname) continue; } - if (!strcmp(NAME, "#exec")) // arg + if (!strcmp(NAME, "exec")) // arg { if (!strcmp(ARG, modname)) @@ -471,7 +472,7 @@ void execute(Stack *stack, Stack *originstack, char *modname) // Self-modifying - if (!strcmp(NAME, "#insert")) // arg + if (!strcmp(NAME, "insert")) // arg { if (ARG[0] == '#' || ARG[0] == '$') kms(stack, "ATTEMPTED TO INSERT A HASH/STRING-INSTRUCTION"); @@ -512,7 +513,7 @@ void execute(Stack *stack, Stack *originstack, char *modname) continue; } - if (!strcmp(NAME, "#expr")) // arg + if (!strcmp(NAME, "expr")) // arg { expression(stack, ARG); continue;