Name: Anonymous 2018-03-02 17:21
I'd like to anally deform brains of web developers with a new concatenative server-side framework. it will be called Backend Forth
./stack main.stk
cat main.stk | ./stack
-//to do: make it read from stdin if no file argument is provided, and read from the specified file otherwise - this would solve the "*" expansion bug
-#define _add 6579297
-#define _plussign 43 //+
-#define _sub 6452595
-#define _minussign 45 //-
-#define _mul 7107949
-#define _starsign 42 //*
-#define _div 7760228
-#define _divisionsign 47 //'/'
-#define _expt 1953527909
-#define _pow 7827312
-#define _hatsign 94 //^
-#define _sum 7173491
-#define _prod 1685025392
-#define _mod 6582125
-#define _percentsign 37 //%
-#define _neg 6776174
-#define _abs 7561825
-#define _floor 491495844966
-#define _ceil 1818846563
-#define _round 431349919602
-#define _sqrt 1953657203
-#define _sin 7235955
-#define _cos 7565155
-#define _tan 7233908
-#define _csc 6517603
-#define _sec 6514035
-#define _cot 7630691
-#define _pi 26992
-#define _asin 1852404577
-#define _acos 1936679777
-#define _atan 1851880545
-#define _acsc 1668506465
-#define _asec 1667593057
-#define _acot 1953456993
-#define _ln 28268
-#define _log 6778732
-#define _log10 206987292524
-#define _logb 1650945900
-#define _log2 845639532
-#define _e 101
-#define _exp 7370853
-#define _dup 7370084
-#define _exch 1751349349
-#define _swap 1885435763
-#define _drop 1886351972
-#define _pop 7368560
-#define _clear 491260308579
-#define _copy 2037411683
-#define _eq 29029
-#define _doubleequalsign 15677 //==
-#define _neq 7431534
-#define _shriekequalsign 15649 //!=
-#define _gt 29799
-#define _greaterthansign 62 //>
-#define _lt 29804
-#define _lessthansign 60 //<
-#define _gte 6648935
-#define _greaterthanequalsign 15678 //>=
-#define _lte 6648940
-#define _lessthanequalsign 15676 //<=
-#define _or 29295
-#define _and 6581857
-#define _not 7630702
-#define _ift 7628393
-#define _if_then 31073746738308713 //if-then
-#define _ifte 1702127209
-#define _if_then_else 3273665478445065833 //if-then-else
-#define _xor 7499640
-#define _iff 6710889
-#define _over 1919252079
-#define _rot 7630706
-#define _roll 1819045746
-#define _index 517097156201
-#define _stack 461228831859
-#define _equalsign 61 //=
-#define _count 500069396323
+#define _add 6579297UL
+#define _plussign 43UL //+
+#define _sub 6452595UL
+#define _minussign 45UL //-
+#define _mul 7107949UL
+#define _starsign 42UL //*
+#define _div 7760228UL
+#define _divisionsign 47UL //'/'
+#define _expt 1953527909UL
+#define _pow 7827312UL
+#define _hatsign 94UL //^
+#define _sum 7173491UL
+#define _prod 1685025392UL
+#define _mod 6582125UL
+#define _percentsign 37UL //%
+#define _neg 6776174UL
+#define _abs 7561825UL
+#define _floor 491495844966UL
+#define _ceil 1818846563UL
+#define _round 431349919602UL
+#define _sqrt 1953657203UL
+#define _sin 7235955UL
+#define _cos 7565155UL
+#define _tan 7233908UL
+#define _csc 6517603UL
+#define _sec 6514035UL
+#define _cot 7630691UL
+#define _pi 26992UL
+#define _asin 1852404577UL
+#define _acos 1936679777UL
+#define _atan 1851880545UL
+#define _acsc 1668506465UL
+#define _asec 1667593057UL
+#define _acot 1953456993UL
+#define _ln 28268UL
+#define _log 6778732UL
+#define _log10 206987292524UL
+#define _logb 1650945900UL
+#define _log2 845639532UL
+#define _e 101UL
+#define _exp 7370853UL
+#define _dup 7370084UL
+#define _exch 1751349349UL
+#define _swap 1885435763UL
+#define _drop 1886351972UL
+#define _pop 7368560UL
+#define _clear 491260308579UL
+#define _copy 2037411683UL
+#define _eq 29029UL
+#define _doubleequalsign 15677UL //==
+#define _neq 7431534UL
+#define _shriekequalsign 15649UL //!=
+#define _gt 29799UL
+#define _greaterthansign 62UL //>
+#define _lt 29804UL
+#define _lessthansign 60UL //<
+#define _gte 6648935UL
+#define _greaterthanequalsign 15678UL //>=
+#define _lte 6648940UL
+#define _lessthanequalsign 15676UL //<=
+#define _or 29295UL
+#define _and 6581857UL
+#define _not 7630702UL
+#define _ift 7628393UL
+#define _if_then 31073746738308713UL //if-then
+#define _ifte 1702127209UL
+#define _if_then_else 3273665478445065833UL //if-then-else
+#define _xor 7499640UL
+#define _iff 6710889UL
+#define _over 1919252079UL
+#define _rot 7630706UL
+#define _roll 1819045746UL
+#define _index 517097156201UL
+#define _stack 461228831859UL
+#define _equalsign 61UL //=
+#define _count 500069396323UL
+
- for (int i = 1; i < argc; i++){
- //+ - * /
- //testing switch
- switch (hash(argv[i])){
+ FILE * file;
+ int ret;
+ char item[100];
+ char status;
+ if (argc > 1){
+ file = fopen(argv[1], "r");
+ if (file == NULL){
+ printf("Not found: %s\n", argv[1]);
+ exit(1);
+ }
+ } else {
+ file = stdin;
+ }
+ while (1){
+ ret = fscanf(file, "%s", item, &status);
+ if (ret == EOF){
+ break;
+ }
+ switch (hash(item)){
+ //+ - * /
- case _starsign: //bash treats "*" as special character...
+ case _starsign:
- stack[pointer] = (double) atof(argv[i]);
- pointer = pointer + 1;
- //if pointer > 1023 ...
+ stack[pointer] = (double) atof(item);
+ pointer += 1;