Guest User

C-like language prototype

a guest
Apr 2nd, 2019
448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.87 KB | None | 0 0
  1.  
  2. type struct {
  3.     str label1;
  4.     str label2;
  5.     str label3;
  6.     str label4;
  7. } as strings;
  8.  
  9. label0 = strings {
  10.     "a",
  11.     "b",
  12.     "c",
  13.     "d"
  14. }
  15.  
  16.  
  17. label1 = cstr "string";
  18.  
  19. label2 = cf32 1234.0f;
  20. label3 = ci32 4;
  21. label4 = ci8 0x00000000;
  22.  
  23. label5 = array<i32> {
  24.     1, 2, 3, 4, 5
  25. };
  26.  
  27. label6 = dict<str, i32>;
  28.  
  29.  
  30. division = func(i8 x, i8 y) {
  31.     ret_x = i32 0;
  32.     ret_y = i32 0;
  33.    
  34.     div [ret_x], x, y;
  35.     mod [ret_y], x, y;
  36.    
  37.     return i32 ret_x; // returns append to a list
  38.     return i32 ret_y; // returns don't exit scope, use break instead
  39.     // break<2> i32 ret_x, ret_y;
  40.     // return<2> i32 ret_x, ret_y;
  41. };
  42.  
  43. multiply = func(i8... x) {
  44.     i32 count = @x;
  45.    
  46.     if(count <= 1) {
  47.         printf [], "Not enough args! \n";
  48.         raise OOArgs; // raise exits scope
  49.     }
  50.    
  51.     i32 out = x[0];
  52.    
  53.     loop i=1, count, i++ {
  54.         mul [out], out, x[i];
  55.     }
  56.    
  57.     return i32 out;
  58. }
  59.  
  60.  
  61. main = func() {
  62.    
  63.     x = i8 5;
  64.     y = i8 6;
  65.    
  66.     ret_x = i32 0;
  67.     ret_y = i32 0;
  68.    
  69.     division [ret_x, ret_y], x, y;
  70.    
  71.     ret_z = 0;
  72.     try {
  73.         multiply [ret_z], 1, 2, 3, 4, 5;
  74.     } catch(*) { // catch all
  75.         break i32 1;
  76.     }
  77.    
  78.     string strs = new strings;
  79.     strs.label1 = str "label 1";
  80.     strs.label2 = str "label 2";
  81.     strs.label3 = str "label 3";
  82.     strs.label4 = str "label 4";
  83.    
  84.     label6[str "a"] = 1;
  85.     label6[str "b"] = 2;
  86.     label6[str "c"] = 3;
  87.     label6[str "d"] = 4;
  88.    
  89.     printf [], "%i32 %i32    \n", z, w; // `[],` not needed
  90.     printf [], "%f %i32 %i8\n", label2, label3, label4;
  91.     printf [], "String: %str \n", cstr;
  92.     printf [], "Length: %i32 \n", @cstr; // @cstr also means cstr[-1] aka the string size
  93.    
  94.     loop each strs as i, v {
  95.         printf [], "%s %s %s \n", i, strs[i], v;
  96.     }
  97.    
  98.     loop each label0 as i, v {
  99.         printf [], "%s %s %s \n", i, label0[i], v;
  100.     }
  101.    
  102.     loop i=0, 5, i++ { // auto i++
  103.         printf [], "%i32 \n", label5[i];
  104.     }
  105.    
  106.     loop each label6 as i, v {
  107.         printf [], "%s = %i32", i, v;
  108.     }
  109.    
  110.     return i32 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment