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