Added more information about the language's design to readme
This commit is contained in:
		
							parent
							
								
									488af74b75
								
							
						
					
					
						commit
						cd157cc69b
					
				
							
								
								
									
										31
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								README.md
									
									
									
									
									
								
							@ -6,6 +6,35 @@ This is still under development and does not compile things yet. Once complete,
 | 
			
		||||
it will serve as a temporary compiler that will be used to write a new one using
 | 
			
		||||
the language itself.
 | 
			
		||||
 | 
			
		||||
The old repository can be found [here](https://github.com/sashakoshka/arf-old).
 | 
			
		||||
 | 
			
		||||
ARF is a low level language with a focus on organization, modularization, and
 | 
			
		||||
code clarity. Behind it's avant-garde syntax, its basically just a more refined
 | 
			
		||||
version of C.
 | 
			
		||||
 | 
			
		||||
A directory of ARF files is called a module, and modules will compile to object
 | 
			
		||||
files (one per module) using C as an intermediate language (maybe LLVM IR in the
 | 
			
		||||
future).
 | 
			
		||||
 | 
			
		||||
## Design aspects
 | 
			
		||||
 | 
			
		||||
These are some design goals that I have followed/am following:
 | 
			
		||||
 | 
			
		||||
- The standard library will be fully optional, and decoupled from the language
 | 
			
		||||
- The language itself must be extremely simple
 | 
			
		||||
- Language features must be immutable (no reflection or operator overloading)
 | 
			
		||||
- Data must be immutable by default
 | 
			
		||||
- Memory not on the stack must be allocated and freed manually
 | 
			
		||||
- Language syntax must have zero ambiguity
 | 
			
		||||
 | 
			
		||||
## Planned features
 | 
			
		||||
 | 
			
		||||
- Type definition through inheritence
 | 
			
		||||
- Struct member functions
 | 
			
		||||
- Go-style interfaces
 | 
			
		||||
- Generics
 | 
			
		||||
- A standard library (that can be dynamically linked)
 | 
			
		||||
 | 
			
		||||
## Checklist
 | 
			
		||||
 | 
			
		||||
- [X] File reader
 | 
			
		||||
@ -13,3 +42,5 @@ the language itself.
 | 
			
		||||
- [ ] Tokens -> syntax tree
 | 
			
		||||
- [ ] Syntax tree -> semantic tree
 | 
			
		||||
- [ ] Semantic tree -> C -> object file
 | 
			
		||||
- [ ] Figure out HOW to implement generics
 | 
			
		||||
- [ ] Create a standard library
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user