Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define d_BufferSize (size_t)65536
- int opr0x3e(char **s1, FILE *s2);
- int opr0x3c(char **s1, FILE *s2);
- int opr0x2b(char **s1, FILE *s2);
- int opr0x2d(char **s1, FILE *s2);
- int opr0x2e(char **s1, FILE *s2);
- int opr0x2c(char **s1, FILE *s2);
- int opr0x5b(char **s1, FILE *s2);
- int opr0x5d(char **s1, FILE *s2);
- int oprnop(char **s1, FILE *s2);
- int main(int argc, char **argv){
- FILE *fin = NULL;
- char *buffer = NULL, *bufferdp, *iuput = NULL, *inputdp;
- int (*swch[0x100])(char **s1, FILE *s2), (**swchdp)(char **s1, FILE *s2) = swch, opr, i;
- if(argc == 2){
- if((fin = fopen(argv[1], "rb")) != NULL){
- if((bufferdp = (buffer = calloc(d_BufferSize, sizeof(char)))) != NULL){
- for(i = 0; i < 0x100; i++) *swchdp++ = &oprnop;
- swch['>'] = &opr0x3e;
- swch['<'] = &opr0x3c;
- swch['+'] = &opr0x2b;
- swch['-'] = &opr0x2d;
- swch['.'] = &opr0x2e;
- swch[','] = &opr0x2c;
- swch['['] = &opr0x5b;
- swch[']'] = &opr0x5d;
- while((opr = fgetc(fin)) != EOF) if(swch[opr](&bufferdp, fin)) break;
- }
- else fputs("memory error.", stdout);
- fclose(fin);
- free(buffer);
- free(input);
- }
- else fputs("file open error.", stdout);
- }
- else fputs("main [inputfile]", stdout);
- return 0;
- }
- int opr0x3e(char **s1, FILE *s2){
- (*s1)++;
- return 0;
- }
- int opr0x3c(char **s1, FILE *s2){
- (*s1)--;
- return 0;
- }
- int opr0x2b(char **s1, FILE *s2){
- (**s1)++;
- return 0;
- }
- int opr0x2d(char **s1, FILE *s2){
- (**s1)--;
- return 0;
- }
- int opr0x2e(char **s1, FILE *s2){
- fputc(**s1, stdout);
- return 0;
- }
- int opr0x2c(char **s1, FILE *s2){
- **s1 = fgetc(stdin);
- return 0;
- }
- int opr0x5b(char **s1, FILE *s2){
- int oprbuf;
- if(!(**s1)){
- do{
- if((oprbuf = fgetc(s2)) == EOF) return EOF;
- }while(oprbuf != ']');
- }
- return 0;
- }
- int opr0x5d(char **s1, FILE *s2){
- int oprbuf;
- do{
- fseek(s2, -2L, SEEK_CUR);
- if((oprbuf = fgetc(s2)) == EOF) return EOF;
- }while(oprbuf != '[');
- fseek(s2, -1L, SEEK_CUR);
- return 0;
- }
- int oprnop(char **s1, FILE *s2){
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement