Add WIP README.md
I still need to add more examples to it, and as I work on the language, the syntax will certainly change, and I will hopefully change the README to reflect these changes as they happen.
This commit is contained in:
parent
1a04677440
commit
1688296528
111
README.md
Normal file
111
README.md
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
# Python++
|
||||||
|
|
||||||
|
I created this language as a result of my frustrations with Python.
|
||||||
|
|
||||||
|
Currently my language is significantly worse than Python, and needs a lot of work before it can be considered functional.
|
||||||
|
|
||||||
|
## Hello World
|
||||||
|
|
||||||
|
```
|
||||||
|
print("Hello, World!\n");
|
||||||
|
```
|
||||||
|
|
||||||
|
The following is a non-comprehensive list of stuff that currently works.
|
||||||
|
|
||||||
|
## Assignment & Declaration
|
||||||
|
|
||||||
|
```
|
||||||
|
a: str= "Hello, World!\n";
|
||||||
|
b: int = 0;
|
||||||
|
c: str;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Structs
|
||||||
|
|
||||||
|
```
|
||||||
|
struct MyStruct {
|
||||||
|
field1: int,
|
||||||
|
field2: str,
|
||||||
|
field3: SomeOtherStruct
|
||||||
|
}
|
||||||
|
|
||||||
|
my_struct: MyStruct = MyStruct{
|
||||||
|
field1=1,
|
||||||
|
field2="Hello, World!",
|
||||||
|
field3=SomeOtherStruct{...} // whatever SomeOtherStruct takes
|
||||||
|
};
|
||||||
|
|
||||||
|
my_struct.field1 = 2;
|
||||||
|
plus5: int = my_struct.field1 + 5;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Enums
|
||||||
|
|
||||||
|
```
|
||||||
|
enum Weekday {
|
||||||
|
Monday,
|
||||||
|
Tuesday,
|
||||||
|
Wednesday,
|
||||||
|
Thursday,
|
||||||
|
Friday,
|
||||||
|
Saturday,
|
||||||
|
Sunday
|
||||||
|
}
|
||||||
|
|
||||||
|
day: Weekday = Weekday.Tuesday;
|
||||||
|
|
||||||
|
match day in {
|
||||||
|
case Monday do { ... }
|
||||||
|
case Tuesday do { ... }
|
||||||
|
case Wednesday do { ... }
|
||||||
|
case Thursday do { ... }
|
||||||
|
case Friday do { ... }
|
||||||
|
case _ do { ... } // default
|
||||||
|
}
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```
|
||||||
|
enum IntResult {
|
||||||
|
Ok(int),
|
||||||
|
Err(Error)
|
||||||
|
}
|
||||||
|
|
||||||
|
result: IntResult = Ok(5);
|
||||||
|
|
||||||
|
match result in {
|
||||||
|
case Ok(num) do { ... } // num is defined in this scope
|
||||||
|
case Err(err) do { ... } // similarly err is defined in this scope
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Currently, polymorphic structs/enums are not supported, however I plan to eventually do so.
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
```
|
||||||
|
func random_number(seed: int) -> int {
|
||||||
|
return 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
my_random_number = random_number(69);
|
||||||
|
|
||||||
|
func min(a: int, b: int) -> int {
|
||||||
|
if a < b return a;
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
the_min = min(5, 10);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Arrays
|
||||||
|
|
||||||
|
## For loops
|
||||||
|
|
||||||
|
## While loops
|
||||||
|
|
||||||
|
## Reading files
|
||||||
|
|
||||||
|
## Importing
|
||||||
|
|
||||||
|
## Assertions
|
||||||
|
|
||||||
|
## Tuples
|
Loading…
Reference in New Issue
Block a user