Cheese++

From Esolang
Jump to navigation Jump to search

Cheese++ is a programming language based almost entirely on the operational working principles of cheese.

Syntax

Cheese++ is case-sensitive.

(Basic) Command Description
Cheese Begin
NoCheese End
Wensleydale() Print (to console)
Swiss Quotation mark equivalent, used when creating strings.
Glyn(operation) The 'variable function'. It must be invoked in every single operation involving a variable, as demonstrated in the examples below. There is only one data type so no data type identifiers are required, saving space. A variable can take any ASCII value.
Cheddar...Coleraine repeat ... until
Stilton...Blue...White if ... then...else
Belgian Prints out the entire source code of the program to the console. Useful for debugging.
Brie Ends a line/section of code

Examples

Hello World

Cheese
   Wensleydale(SwissHello WorldSwiss)Brie
NoCheese

Variable declaration

Glyn(                                       //initiates variable declarations
 VarName(value)                                   //declares a variable called VarName, of value 'value'
 ) 
Brie                                       //indicates end of variable declarations

99 bottles of beer

Unfortunately, due to a persistent and unprecedented compiler bug, any Wensleydale() functions containing the words 'bottles' and 'beer' cause runtime errors and immediate data corruption. This lends more of a challenge to creating this program. However, it is possible to circumvent this by calling a system function called 'Edam', which replaces occurrences of specified character sets with the words 'bottles' and 'beer' respectively. This occurs as following:

Edam(word1,word2)Brie

Now to demonstrate the working program:

Cheese                                                                      //begins program
  Glyn(Number(99))Brie                                                      //declares a variable 'number' of value 99
  Edam(slices,cheese)Brie
   Cheddar                                                                  //repeat loop
    Wensleydale(Glyn(Number)Swiss slices of cheese on the wall.Swiss)Brie   //prints line. Number is outside the swiss tags as it is a variable
                                                                            //replaced by 'bottles' and 'beer' at runtime
    Glyn(Number=Number-1) Brie                                              //Glyn operator used 
   Coleraine(Glyn(Number = 0)) Brie                                         //until Number = 0
NoCheese 

Quine

Quines in Cheese++ are easily coded. The function 'Belgian' will print out the entire source code of the program to the console.

Cheese
Belgian Brie
NoCheese

Cat

There are no user input functions in base Cheese++, so this is impossible.

Classification

Development is in initial stages, but researchers currently believe that in its final form it will be Turing-complete.

Compiler

The compiler is still in development. It is being written in its (no longer publicly available) parent language, Cheese+.