Skip to content

Instantly share code, notes, and snippets.

@htor
Last active October 12, 2015 23:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save htor/4105033 to your computer and use it in GitHub Desktop.
Save htor/4105033 to your computer and use it in GitHub Desktop.
makaroni-suppe
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* function aliases */
#define talk printf
#define die talk
#define space calloc
/* keywords */
#define give return
#define when while(
#define dowhen for(
#define perhaps if(
#define weight sizeof
#define neverchanging const
#define maketype typedef
#define empty NULL
/* types */
#define nothing void
#define integer int
#define byte char
#define sink float
#define quadruple double
#define blob struct
#define arrow *
#define lettersequence char *
/* start statements */
#define about (
#define uses (
#define has (
#define with (
#define of (
#define and_a ,
#define and_with ,
#define plus ,
#define gets =
#define using {
/* end statements */
#define slightly ;
#define back ;
#define set ;
#define now );
#define done )
#define in ) {
#define finish }
#define called )
#define then ) {
#define relax }
/* operators */
#define neg -
#define add +
#define divide /
#define multiply *
#define lesser <
#define bigger >
#define alike ==
#define unlike !=
#define shrink --
#define grow ++
#define and &&
#define or ||
#define not !
#define array []
#define home &
#define member ->
#define inside *
integer ONE gets 1 set
integer ZERO gets 0 set
maketype blob using
integer header set
byte data[1024] set
finish pkg set
nothing dostuff has neverchanging lettersequence str and_a integer num in
perhaps strlen with str called alike 0 or str alike NULL in
die with "zero length string or NULL arrow!" now
give back
finish
when num bigger 0 then
talk with str now
shrink num slightly
relax
finish
pkg arrow pkg_new uses byte arrow d in
perhaps d alike empty then
give empty back
finish
pkg arrow p gets calloc with weight of pkg done plus 0 now
p member header gets weight of pkg now
strcpy with p member data plus d now
give p back
finish
integer main uses integer argc plus neverchanging lettersequence argv array in
integer i gets 0 set
when inside (grow argv) unlike empty then
talk about "argv: %s\n" plus inside argv now
grow i slightly
relax
talk about "you provided %d arguments\n" plus i now
pkg arrow myblob gets pkg_new of "a new package" now
talk about "myblob's data: %s\n" plus myblob member data now
finish
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment