Add example and readme, update header
This commit is contained in:
105
README.md
Normal file
105
README.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# zc
|
||||
|
||||
What if C, but easier?
|
||||
|
||||
## What is zc?
|
||||
|
||||
zc is a headerfile which makes a bunch of macros which mess with the way the C programming language works.
|
||||
|
||||
One of the primary advantages of using zc is easier object orientated patterns, without the bloat of C++. (The syntax does need a little getting used to.)
|
||||
|
||||
## Setup
|
||||
|
||||
```
|
||||
sudo make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
There are 2 ways to use zc:
|
||||
|
||||
* Inside of C - do `#include <zc.h>` and you've now got access to all that zc has to offer.
|
||||
* Using a .zc file and the zc command - you won't be yelled at as much. Type `zc filename.zc` to compile.
|
||||
|
||||
However, using either will allow you to program in the same way.
|
||||
|
||||
## Syntax
|
||||
|
||||
This section is WIP
|
||||
|
||||
Define an entry point:
|
||||
|
||||
```c
|
||||
entry {
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
Create variables:
|
||||
|
||||
```c
|
||||
entry {
|
||||
Integer x is 5;
|
||||
}
|
||||
```
|
||||
|
||||
Print something out:
|
||||
|
||||
```c
|
||||
entry {
|
||||
Integer x is 5;
|
||||
print(x);
|
||||
}
|
||||
```
|
||||
|
||||
Create a list of something:
|
||||
|
||||
```c
|
||||
entry {
|
||||
Integer list x is many(Integer, 5);
|
||||
x[0] is 5;
|
||||
x[1] is 10;
|
||||
x[2] is 15;
|
||||
x[3] is 20;
|
||||
x[4] is 25;
|
||||
|
||||
// Resize the list
|
||||
resize(x, 10);
|
||||
}
|
||||
```
|
||||
|
||||
Create a class, constructor, destructor, and methods:
|
||||
|
||||
```c
|
||||
class(Car, {
|
||||
String make;
|
||||
Integer year;
|
||||
Method(Car, drive, void);
|
||||
Destructor(Car);
|
||||
});
|
||||
|
||||
method(Car, drive, void) {
|
||||
// self allows you to access elements inside the class
|
||||
printf("Car %s from %d goes vroom vroom\n", self->make, self->year);
|
||||
}
|
||||
|
||||
destructor(Car) {
|
||||
free(self->make);
|
||||
}
|
||||
|
||||
constructor(Car, String make, Integer year) {
|
||||
return (Car) {
|
||||
.make = make,
|
||||
.year = year,
|
||||
.drive = &__Car_drive,
|
||||
.destructor_fn = &destroyCar,
|
||||
};
|
||||
}
|
||||
|
||||
entry {
|
||||
Car myCar = newCar("Toyota", 1996);
|
||||
myCar.drive(&myCar);
|
||||
}
|
||||
```
|
||||
|
||||
See `bank.zc` for a full example.
|
||||
Reference in New Issue
Block a user