Fromage
Jump to navigation
Jump to search
- This article is not detailed enough and needs to be expanded. Please help us by adding some more information.
Fromage is an esoteric programming language with ten instructions, all of which operate only on single bits. The name comes from FReakish Outright Mad languAGE.
Implementation
This C implementation, originally titled fromage.c
, was taken from http://esoteric.sange.fi, the website with the backup of Fromage. It is likely this is a valid implementation, but it's also good to check if this isn't the case.
#include <stdio.h> #include <stdlib.h> #include <stddef.h> int main(int g,char**h){int c;char*i,j,*b;FILE*w;ptrdiff_t a,d,e,f,k,l,o,p,s,t,u ,v,x,y;for(i=b=NULL,c=e=f=k=l=o=s=u=x=0,w=--g?fopen(h[1],"r"):stdin;c-EOF;){x<l? (c=i[x]):(i=realloc(i,++l),i[l-1]=c=getc(w)),c-EOF&&(p=k+!(c-'(')-!(c-')'),v=u+! (c-'}')-!(c-'{'),a=f-!(c-']'),y=c==';',(t=s+!(c-'>')-!(c-'<'))/8<o||(b=realloc(b ,++o),b[o-1]=0),d=!(b[t/8]&(j=1<<7-t%8)),c-'['||(y+=d,++a),d^=c!=':',u?(p=a=y=0) :k?(v=a=y=0):e?(f=(a?a<0:y)?(e=0):a,v=p=0):(e=!!y),x+=(u=v*=v>0)?-1:(k=p*=p>0)?1 :e||(t==8&d?putchar(*b):t==9&d?*b=getchar():(b[t/8]=b[t/8]&~j|d*j),s=t,1));}g&& fclose(w),exit(0);}
Commands
The ten operator symbols are:
Symbol | Description |
---|---|
parentheses | SKIP always |
braces | LOOP forever |
brackets semicolons | IF this bit ELSE |
less greater signs | DECREMENT INCREMENT pointer |
colons | TOGGLE bit |
The Pointer points to a single bit. Storing in bit eight writes a character from bits zero to seven. Storing in bit nine reads a character in bits zero to seven.
Examples
These examples are to see how the language is and could contain errors
Hello, world!
>:>>>:>>>>:<<<<<<H :>>:>:>>:>:<<<<e :>>>:>::<<ll :>:>:<<<<<<<o :>>>:>:>:>:>:<<<<<<<blank :>>:>>:>:>:>:<<<<<w :>:>>>>:<<<<<o :>:>:>>:>:<<<<<r :>:>:>:>>:<<<<l :>>>>:<<<<<<<d :>:>>:>:>:>>:return
Cat program
>>>>>>>>{>:<<[<[<[<[<[<[<[<[(]>]>]>]>]>]>]>]>:})