Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.00 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef void *(
  5.     *(
  6.         *(
  7.             *(*p) (void *, void *)
  8.         ) (void *, void *)
  9.     ) (void *, void *)
  10. ) (void *, void *);
  11.  
  12. typedef p some_function;
  13.  
  14. typedef struct pair {
  15.     struct pair *head;
  16.     struct pair *tail;
  17. } pair;
  18.  
  19. void *
  20. return_a(void *a, void *b) {
  21.     return a;
  22. }
  23.  
  24. void *
  25. return_b(void *a, void *b) {
  26.     return b;
  27. }
  28.  
  29. typedef unsigned char u_char;
  30.  
  31. pair *w,
  32. a = {(pair *) return_a, (pair *) return_a},
  33. b = {(pair *) return_a, (pair *) return_b},
  34. c = {(pair *) return_b, (pair *) return_a},
  35. d = {(pair *) return_b, (pair *) return_b};
  36.  
  37. pair table[] = {
  38.     &b, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  39.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  40.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  41.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  42.     &d, &d, &d, &d,     &c, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &c, &b,
  43.     &b, &d, &a, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  44.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  45.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  46.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  47.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  48.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  49.     &d, &d, &d, &d,     &d, &d, &b, &b,     &d, &d, &a, &b,     &d, &d, &d, &d,
  50.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  51.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  52.     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,     &d, &d, &d, &d,
  53.     &d, &d, &d, &d,     &d, &d, &b, &c,     &d, &d, &a, &c,     &d, &d, &d, &d,
  54.     &c, &b, &b, &b,     &d, &d, &a, &a
  55. };
  56. // Is table an ascii table?
  57. pair table2[] = {
  58.     /* '\x00' */ &b, /* '\x01' */ &d, /* '\x02' */ &d, /* '\x03' */ &d,     /* '\x04' */ &d, /* '\x05' */ &d, /* '\x06' */ &d, /* '\x07' */ &d,     /* '\x08' */ &d, /* '\t'   */ &d, /* '\n'   */ &d, /* '\x0b' */ &d,     /* '\x0c' */ &d, /* '\r'   */ &d, /* '\x0e' */ &d, /* '\x0f' */ &d,
  59.     /* '\x10' */ &d, /* '\x11' */ &d, /* '\x12' */ &d, /* '\x13' */ &d,     /* '\x14' */ &d, /* '\x15' */ &d, /* '\x16' */ &d, /* '\x17' */ &d,     /* '\x18' */ &d, /* '\x19' */ &d, /* '\x1a' */ &d, /* '\x1b' */ &d,     /* '\x1c' */ &d, /* '\x1d' */ &d, /* '\x1e' */ &d, /* '\x1f' */ &d,
  60.     /* ' '    */ &d, /* '!'    */ &d, /* '"'    */ &d, /* '#'    */ &d,     /* '$'    */ &d, /* '%'    */ &d, /* '&'    */ &d, /* "'"    */ &d,     /* '('    */ &d, /* ')'    */ &d, /* '*'    */ &d, /* '+'    */ &d,     /* ','    */ &d, /* '-'    */ &d, /* '.'    */ &d, /* '/'    */ &d,
  61.     /* '0'    */ &d, /* '1'    */ &d, /* '2'    */ &d, /* '3'    */ &d,     /* '4'    */ &d, /* '5'    */ &d, /* '6'    */ &d, /* '7'    */ &d,     /* '8'    */ &d, /* '9'    */ &d, /* ':'    */ &d, /* ';'    */ &d,     /* '<'    */ &d, /* '='    */ &d, /* '>'    */ &d, /* '?'    */ &d,
  62.     /* '@'    */ &d, /* 'A'    */ &d, /* 'B'    */ &d, /* 'C'    */ &d,     /* 'D'    */ &c, /* 'E'    */ &d, /* 'F'    */ &d, /* 'G'    */ &d,     /* 'H'    */ &d, /* 'I'    */ &d, /* 'J'    */ &d, /* 'K'    */ &d,     /* 'L'    */ &d, /* 'M'    */ &d, /* 'N'    */ &c, /* 'O'    */ &b,
  63.     /* 'P'    */ &b, /* 'Q'    */ &d, /* 'R'    */ &a, /* 'S'    */ &d,     /* 'T'    */ &d, /* 'U'    */ &d, /* 'V'    */ &d, /* 'W'    */ &d,     /* 'X'    */ &d, /* 'Y'    */ &d, /* 'Z'    */ &d, /* '['    */ &d,     /* '\\'   */ &d, /* ']'    */ &d, /* '^'    */ &d, /* '_'    */ &d,
  64.     /* '`'    */ &d, /* 'a'    */ &d, /* 'b'    */ &d, /* 'c'    */ &d,     /* 'd'    */ &d, /* 'e'    */ &d, /* 'f'    */ &d, /* 'g'    */ &d,     /* 'h'    */ &d, /* 'i'    */ &d, /* 'j'    */ &d, /* 'k'    */ &d,     /* 'l'    */ &d, /* 'm'    */ &d, /* 'n'    */ &d, /* 'o'    */ &d,
  65.     /* 'p'    */ &d, /* 'q'    */ &d, /* 'r'    */ &d, /* 's'    */ &d,     /* 't'    */ &d, /* 'u'    */ &d, /* 'v'    */ &d, /* 'w'    */ &d,     /* 'x'    */ &d, /* 'y'    */ &d, /* 'z'    */ &d, /* '{'    */ &d,     /* '|'    */ &d, /* '}'    */ &d, /* '~'    */ &d, /* '\x7f' */ &d,
  66.     /* '\x80' */ &d, /* '\x81' */ &d, /* '\x82' */ &d, /* '\x83' */ &d,     /* '\x84' */ &d, /* '\x85' */ &d, /* '\x86' */ &d, /* '\x87' */ &d,     /* '\x88' */ &d, /* '\x89' */ &d, /* '\x8a' */ &d, /* '\x8b' */ &d,     /* '\x8c' */ &d, /* '\x8d' */ &d, /* '\x8e' */ &d, /* '\x8f' */ &d,
  67.     /* '\x90' */ &d, /* '\x91' */ &d, /* '\x92' */ &d, /* '\x93' */ &d,     /* '\x94' */ &d, /* '\x95' */ &d, /* '\x96' */ &d, /* '\x97' */ &d,     /* '\x98' */ &d, /* '\x99' */ &d, /* '\x9a' */ &d, /* '\x9b' */ &d,     /* '\x9c' */ &d, /* '\x9d' */ &d, /* '\x9e' */ &d, /* '\x9f' */ &d,
  68.     /* '\xa0' */ &d, /* '\xa1' */ &d, /* '\xa2' */ &d, /* '\xa3' */ &d,     /* '\xa4' */ &d, /* '\xa5' */ &d, /* '\xa6' */ &d, /* '\xa7' */ &d,     /* '\xa8' */ &d, /* '\xa9' */ &d, /* '\xaa' */ &d, /* '\xab' */ &d,     /* '\xac' */ &d, /* '\xad' */ &d, /* '\xae' */ &d, /* '\xaf' */ &d,
  69.     /* '\xb0' */ &d, /* '\xb1' */ &d, /* '\xb2' */ &d, /* '\xb3' */ &d,     /* '\xb4' */ &d, /* '\xb5' */ &d, /* '\xb6' */ &b, /* '\xb7' */ &b,     /* '\xb8' */ &d, /* '\xb9' */ &d, /* '\xba' */ &a, /* '\xbb' */ &b,     /* '\xbc' */ &d, /* '\xbd' */ &d, /* '\xbe' */ &d, /* '\xbf' */ &d,
  70.     /* '\xc0' */ &d, /* '\xc1' */ &d, /* '\xc2' */ &d, /* '\xc3' */ &d,     /* '\xc4' */ &d, /* '\xc5' */ &d, /* '\xc6' */ &d, /* '\xc7' */ &d,     /* '\xc8' */ &d, /* '\xc9' */ &d, /* '\xca' */ &d, /* '\xcb' */ &d,     /* '\xcc' */ &d, /* '\xcd' */ &d, /* '\xce' */ &d, /* '\xcf' */ &d,
  71.     /* '\xd0' */ &d, /* '\xd1' */ &d, /* '\xd2' */ &d, /* '\xd3' */ &d,     /* '\xd4' */ &d, /* '\xd5' */ &d, /* '\xd6' */ &d, /* '\xd7' */ &d,     /* '\xd8' */ &d, /* '\xd9' */ &d, /* '\xda' */ &d, /* '\xdb' */ &d,     /* '\xdc' */ &d, /* '\xdd' */ &d, /* '\xde' */ &d, /* '\xdf' */ &d,
  72.     /* '\xe0' */ &d, /* '\xe1' */ &d, /* '\xe2' */ &d, /* '\xe3' */ &d,     /* '\xe4' */ &d, /* '\xe5' */ &d, /* '\xe6' */ &d, /* '\xe7' */ &d,     /* '\xe8' */ &d, /* '\xe9' */ &d, /* '\xea' */ &d, /* '\xeb' */ &d,     /* '\xec' */ &d, /* '\xed' */ &d, /* '\xee' */ &d, /* '\xef' */ &d,
  73.     /* '\xf0' */ &d, /* '\xf1' */ &d, /* '\xf2' */ &d, /* '\xf3' */ &d,     /* '\xf4' */ &d, /* '\xf5' */ &d, /* '\xf6' */ &b, /* '\xf7' */ &c,     /* '\xf8' */ &d, /* '\xf9' */ &d, /* '\xfa' */ &a, /* '\xfb' */ &c,     /* '\xfc' */ &d, /* '\xfd' */ &d, /* '\xfe' */ &d, /* '\xff' */ &d,
  74.     /* '\xff' */ &c, /* '\xff' */ &b, /* '\xff' */ &b, /* '\xff' */ &b,     /* '\xff' */ &d, /* '\xff' */ &d, /* '\xff' */ &a, /* '\xff' */ &a,
  75. };
  76.  
  77. pair *
  78. cons(pair * a, pair * b) {
  79.     pair *p = malloc(sizeof(pair));
  80.     p->head = a;
  81.     p->tail = b;
  82.     return p;
  83. }
  84.  
  85. u_char table_size = sizeof(table);
  86.  
  87. some_function f(some_function a, some_function b) {
  88.     u_char k; // Current char that we're looking at from the stream
  89.     pair d;
  90.     some_function v, r, q, i, C, c, u, g;
  91.     //some_function m = (some_function) ((*((*((*w).head)).head)).head);
  92.     some_function m = (some_function) w->head->head->head;
  93.     size_t offset = fread(&k, 1, 1, stdin);
  94.    
  95.     C = (some_function)table[offset]->head->head;
  96.    
  97.     v = C(return_b, return_a);
  98.     k = (u_char) C(table_size, k);
  99.     d = table[k];
  100.    
  101.     /*c = (
  102.         u = a(b, return_b),
  103.         i = ((some_function) ((*(pair) ((*((*w).a)).a)).a))(return_b, ((*((*&d).a)).a)),
  104.  
  105.         a(
  106.             ((*((*(pair) &d).a)).a),
  107.             ((some_function) ((*((*(pair) &d).a)).a))(return_b, return_a)
  108.         )(
  109.             b(((*(pair) ((*(pair) &d).a)).a), ((some_function) ((*(pair) ((*(pair) &d).a)).a))(return_b, return_a)),
  110.             return_b
  111.         )
  112.     );*/
  113.     u = a(b, return_b);
  114.     i = ((some_function) ((*(pair) (w->head->head)).tail))(return_b, d->head->head);
  115.     c = a(
  116.         ((*((*(pair) &d).tail)).head),
  117.         ((some_function) ((*((*(pair) &d).tail)).head))(return_b, return_a)
  118.     )(
  119.         b(((*(pair) ((*(pair) &d).tail)).tail), ((some_function) ((*(pair) ((*(pair) &d).tail)).tail))(return_b, return_a)),
  120.         return_b
  121.     );
  122.    
  123.     {
  124.         some_function a = (some_function) ((*(pair) ((*&d).head)).tail);
  125.         {
  126.             some_function b = C(return_b, i(u(return_b, return_a), return_b));
  127.             {
  128.                 some_function u = C(return_b, ((some_function) ((*((*&d).head)).head))(return_b, return_a));
  129.  
  130.                 ((*((*((*w).head)).head)).head) = (pair *) i(return_a, ((*((*((*w).head)).head)).head));
  131.                 r = b(m(c, return_b),
  132.                                 C(m(return_b, ((some_function) ((*(pair) ((*((*w).head)).head)).tail))(return_b, return_a)), (f)));
  133.                 v = b(return_b, v);
  134.                 i = b(a(return_b, return_a), return_b);
  135.                 g = (b)(a(m(c(return_b, return_a), return_a), return_b), return_b);
  136.                 q = u(
  137.                     ((*(pair) ((*&d).head)).tail), return_b)(
  138.                                     ((some_function) ((*(pair) ((*((*w).head)).head)).tail))(
  139.                                                     ((some_function) ((*((*(pair) &d).tail)).head))(((*((*(pair) ((*w).head)).tail)).head),
  140.                                                                     ((some_function) ((*((*(pair) ((*w).head)).tail)).head))(return_b, return_a))(return_b, return_a),
  141.                                                                     return_b)(return_b, return_a),
  142.                                                                     return_b
  143.                 );
  144.                 ((*((*(pair) ((*w).head)).tail)).head) = (pair *) u(((*(pair) ((*&d).head)).tail), return_b)(
  145.                                 ((some_function) ((*(pair) ((*((*w).head)).head)).tail))(return_b, return_a), return_b)(
  146.                                                 ((*((*(pair) &d).tail)).head), ((*((*(pair) ((*w).head)).tail)).head));
  147.             }
  148.         }
  149.  
  150.         ((*(pair) ((*((*w).head)).head)).tail) = (pair *) q(
  151.                         a = ((some_function) ((*(pair) ((*((*w).head)).head)).tail))(return_b, return_a), ((*(pair) ((*((*w).head)).head)).tail));
  152.         fwrite((k, &table_size), 1,
  153.                         u(return_b, g)(1, 0), stdout);
  154.         table_size = k;
  155.         fwrite((k, &k), 1, u(return_a, g)(1, 0), stdout);
  156.         ((*((*((*(pair) w).tail)).head)).head) = (pair *) u(((p) ((*((*((*(pair) w).tail)).head)).head))(return_b, return_a),
  157.                         ((*((*((*(pair) w).tail)).head)).head));
  158.         ((*((*(pair) ((*w).head)).tail)).head) = (pair *) q(a(((*((*(pair) &d).tail)).head), ((*((*(pair) ((*w).head)).tail)).head)),
  159.                         ((*((*(pair) ((*w).head)).tail)).head));
  160.     }
  161.     ((*(pair) ((*((*(pair) w).tail)).head)).tail) = (pair *) ((some_function) ((*((*((*(pair) w).tail)).head)).head))(
  162.                     ((*(pair) ((*((*(pair) w).tail)).head)).tail),
  163.                     u(((some_function) ((*(pair) ((*((*(pair) w).tail)).head)).tail))(return_b, return_a),
  164.                                     ((*(pair) ((*((*(pair) w).tail)).head)).tail)));
  165.    
  166.     g = u(
  167.         (q = u(
  168.             C(return_a,
  169.                 ((some_function) ((*((*((*(pair) w).tail)).head)).head))(((*(pair) ((*((*(pair) w).tail)).head)).tail), return_b)),
  170.                 return_b))(return_b, return_a), g
  171.     );
  172.     v = g(return_a, i(u(return_b, i(f, return_b))(((*((*(pair) &d).tail)).head), ((*(pair) ((*(pair) &d).tail)).tail)), v));
  173.     r = q(return_b, g(f, i(v(f, (((*((*((*w).head)).head)).head) = (pair *) m, return_b)), r)));
  174.     return q(return_b, v)(r(g(return_a, a), g(return_a, b)), r);
  175. }
  176.  
  177. int main() {
  178.     // W = control flow/logic data?
  179.     w = cons(
  180.         cons(
  181.             cons((pair *) return_b, (pair *) return_b), // w is set to this
  182.             cons((pair *) return_b, (pair *) return_b)
  183.         ),
  184.         cons(
  185.             cons((pair *) return_b, (pair *) return_b),
  186.             cons((pair *) return_b, (pair *) return_b)
  187.         )
  188.     );
  189.     return printf((u_char *) f(return_b, return_b)("OK\n", "\n ^ Error\n"));
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement