parent
3f0ce063e7
commit
d9d1b539cd
18
README.md
18
README.md
|
@ -1,2 +1,18 @@
|
||||||
# nimp
|
# nimp
|
||||||
A simple programming language that anyone can read, and where nothing is implied.
|
|
||||||
|
A simple programming language that anyone can read, and where nothing is
|
||||||
|
implied.
|
||||||
|
|
||||||
|
nimp is designed to be intentionally verbose to the point of pain, because it
|
||||||
|
is meant to be read by **anyone**, including non-programmers, without
|
||||||
|
sacrificing functionality.
|
||||||
|
|
||||||
|
Here's how you'd write a _Hello world_ program in nimp:
|
||||||
|
|
||||||
|
```nimp
|
||||||
|
import module io from standard-library.
|
||||||
|
|
||||||
|
call io.print with contents as "Hello world!".
|
||||||
|
```
|
||||||
|
|
||||||
|
Everything in nimp is defined as a sentence that can be read in plain English.
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
.dub
|
||||||
|
docs.json
|
||||||
|
__dummy.html
|
||||||
|
docs/
|
||||||
|
/compiler
|
||||||
|
compiler.so
|
||||||
|
compiler.dylib
|
||||||
|
compiler.dll
|
||||||
|
compiler.a
|
||||||
|
compiler.lib
|
||||||
|
compiler-test-*
|
||||||
|
*.exe
|
||||||
|
*.pdb
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.lst
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"authors": [
|
||||||
|
"Andrew Lalis"
|
||||||
|
],
|
||||||
|
"copyright": "Copyright © 2023, Andrew Lalis",
|
||||||
|
"description": "Compiler for the NIMP language.",
|
||||||
|
"license": "MIT",
|
||||||
|
"name": "compiler"
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
import std.stdio;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
writeln("Edit source/app.d to start your project.");
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Arrays
|
||||||
|
|
||||||
|
define a1 as array of integer with value [1, 2, 3].
|
||||||
|
define a2 as array of boolean with value [true, false].
|
||||||
|
define a3 as array of float with size 64.
|
||||||
|
|
||||||
|
# Structs
|
||||||
|
define S1 as struct with body {
|
||||||
|
define a as integer.
|
||||||
|
define b as float.
|
||||||
|
|
||||||
|
define sum as function returning integer with body {
|
||||||
|
return sum of a from this and b from this.
|
||||||
|
}.
|
||||||
|
}.
|
||||||
|
|
||||||
|
# Interfaces
|
||||||
|
define Gettable as interface with body {
|
||||||
|
define get as function returning integer.
|
||||||
|
define getAll as function returning array of integer.
|
||||||
|
define getNone as function returning array of integer with body {
|
||||||
|
return array of integer with value [].
|
||||||
|
}.
|
||||||
|
}.
|
|
@ -0,0 +1,14 @@
|
||||||
|
define fibonacci as function
|
||||||
|
taking n as integer
|
||||||
|
and returning integer
|
||||||
|
with body {
|
||||||
|
if n is less than or equal to 1 then return n.
|
||||||
|
return sum of
|
||||||
|
call fibonacci with n as difference of n and 1, and
|
||||||
|
call fibonacci with n as difference of n and 2.
|
||||||
|
}.
|
||||||
|
|
||||||
|
define x as integer with value of call fibonacci with n as 42.
|
||||||
|
|
||||||
|
import module io from standard-library.
|
||||||
|
call io:print with contents as string of x.
|
|
@ -0,0 +1,22 @@
|
||||||
|
define foo as function with body {
|
||||||
|
import module io from standard-library.
|
||||||
|
call io:print with contents as "Hello world".
|
||||||
|
}
|
||||||
|
|
||||||
|
define sumInts as function
|
||||||
|
taking a as integer,
|
||||||
|
b as integer,
|
||||||
|
and returning integer,
|
||||||
|
with body {
|
||||||
|
return sum of a and b.
|
||||||
|
}
|
||||||
|
|
||||||
|
define malloc as external function taking size as integer, and returning pointer to void.
|
||||||
|
define free as external function taking ptr as pointer to void.
|
||||||
|
|
||||||
|
define main as function returning integer with body {
|
||||||
|
call foo.
|
||||||
|
define x as integer with value of call sumInts with a as 3 and b as 5.
|
||||||
|
define ptr as pointer to void with value of call malloc with size as 42.
|
||||||
|
call free with ptr as ptr.
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
import module io from standard-library.
|
||||||
|
|
||||||
|
define main as function taking args as array of character with body {
|
||||||
|
call io.print with contents as "Hello world".
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Syntax: define _SYMBOL_ as _TYPE_ with value of _EXPRESSION[_TYPE_]_.
|
||||||
|
# Or shortcut: define _SYMBOL_ as _EXPRESSION[_TYPE_]_.
|
||||||
|
|
||||||
|
define x as integer with value of 42.
|
||||||
|
|
||||||
|
define b as boolean.
|
||||||
|
assign true to b.
|
||||||
|
|
||||||
|
define bString as string of b.
|
||||||
|
|
||||||
|
define constant PI as float with value of 3.14.
|
||||||
|
define quarterCircle as float with value of PI divided by 2.
|
||||||
|
|
||||||
|
define s1 as string with value of "Hello world!".
|
||||||
|
|
||||||
|
# Shortcut expressions where type is implied:
|
||||||
|
define a as sum of 3 and 2.
|
||||||
|
define c as true or false.
|
||||||
|
define s2 as "Hello world, again.".
|
Loading…
Reference in New Issue