You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
eon/README.md

102 lines
2.4 KiB

5 years ago
# Deon programming language V0.9.2
5 years ago
My computer programming language made with LEX/YACC written in C. (interpreted)
5 years ago
V0.9.2 Update notes:
* major cleaning of the project
* issues found and documented
V0.9.1 Update notes:
* Prep for doubly linked lists
* Prep for VOID data type
* Prep for merge/clean
V0.8
* Prep for TCP/IP implementation
* Prep for VOID data type
5 years ago
# Hello World.
5 years ago
```
def Main : {
printf[ "hello world" ];
};
call Main;
```
Requirements to making a program:
5 years ago
1.) a struct/function.
5 years ago
2.) a call statement.
# Variables
5 years ago
Variables are stored in a hashmap for quick and easy access. Variables also support type juggling. When you define a variable its type will be assumed when parsed.
5 years ago
```
5 years ago
myint = 121231;
mydouble = -123.122;
mystring = "cool string";
5 years ago
mychar = 'c'; // char
myfunction = { printf[ "hello world" ]; }; (statement list)
```
Variables are scoped to the struct that they are defined in. This is so everything is not global. An example of this would look:
```
def MyDog : {
age = -153000;
name = "i dont have a name";
printfMyName = {
printf[ name ];
};
};
def Main : {
someOtherAge = 2;
myRealDogsName = "cat"; // because variable naming is the hardest thing in computer science.
printfMyName = {
printf[ someOtherAge ];
};
call MyDog::printfMyName;
/*
When you do not use the scope resolution modifier then it will only check local functions.
The local function hashmap is stored in the head of your functions linked list.
/*
5 years ago
call printfMyName;
5 years ago
};
call Main;
```
# Logic
Logic is first evaluated and if deemed valid then a list of statements will be executed.
```
if [ 10 > 9 ]: {
printf [ "10 is bigger than 9!" ];
newInt = 100;
};
5 years ago
if [ {int} newInt > 99 ]: {
5 years ago
printf [ "newInt is bigger than 99" ];
};
```
# Functions
Functions can be declared inside of a struct and accessed by anyone who uses the scope resolution operator. Do not mistake structs as functions just because you can interact with them in the same way. Functions do not have "scope" like structs do. Functions can interact with all elements in the parenting struct including other functions, and those functions local variables.
```
def NewStruct : {
someFunction = {
printf[ "hello world" ];
};
};
5 years ago
5 years ago
call NewStruct;
```
# Coming soon
TCP networking, file handling, and finally loops!