This repository has been archived on 2022-08-29 . You can view files and clone it, but cannot push or open issues or pull requests.
				
			
		
		
		
		
		
		Reviewed-on: #6
The ARF programming language.
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.
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)
 - Prefer static over dynamic
 - Data must be immutable by default
 - Memory not on the stack must be allocated and freed manually
 - Language syntax must have zero ambiguity
 - The compiler should not generate new functions or complex logic that the user has not written
 - One line at a time - the language's syntax should encourage writing code that flows vertically and not horizontally, with minimal nesting
 
Planned features
- Type definition through inheritence
 - Struct member functions
 - Go-style interfaces
 - Generics
 - A standard library (that can be dynamically linked)
 
Checklist
- File reader
 - File -> tokens
 - Tokens -> syntax tree
 - Syntax tree -> semantic tree
 - Semantic tree -> C -> object file
 - Figure out HOW to implement generics
 - Create a standard library
 
Description
				This repository is old. It has been officially moved to https://git.tebibyte.media/arf/arf!
						
						
						
					Languages
				
				
								
								
									Go
								
								100%