The ARF programming language
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Sasha Koshka 58bae14528 wip 1 month ago
analyzer wip 1 month ago
arfc Fixed import paths 3 months ago
assets Update heatmap 3 months ago
examples Updated example code 3 months ago
file Enum member names and values must be unique 2 months ago
infoerr Parser now sets type member location 2 months ago
lexer Some error message tweaks 2 months ago
parser MMM im so full from phrase analysis 1 month ago
testCommon Moved testing utilities to its own package 3 months ago
tests Add non-basic types to type section test case 2 months ago
translator Create translator stub 2 months ago
types Iterator actually advances now 2 months ago
.editorconfig Added editorconfig file 2 months ago
.gitignore Added gitignore 4 months ago
LICENSE Added licesnse 4 months ago Removed redundant info from readme 3 months ago
go.mod Fixed import paths 3 months ago


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).

Be sure to visit the wiki for more information.

Planned Features

  • Type definition through inheritence
  • Struct member functions
  • Go-style interfaces
  • Generics
  • A standard library (that can be dynamically linked)


  • 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

Compiler Progress

Progress heatmap
  • Yellow: needs to be completed for the MVP
  • Lime: ongoing progress in this area
  • Green: Already completed