The ARF programming language
You cannot 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 11 months ago
analyzer wip 11 months ago
arfc Fixed import paths 1 year ago
assets Update heatmap 1 year ago
examples Updated example code 1 year ago
file Enum member names and values must be unique 12 months ago
infoerr Parser now sets type member location 12 months ago
lexer Some error message tweaks 11 months ago
parser MMM im so full from phrase analysis 11 months ago
testCommon Moved testing utilities to its own package 1 year ago
tests Add non-basic types to type section test case 11 months ago
translator Create translator stub 12 months ago
types Iterator actually advances now 1 year ago
.editorconfig Added editorconfig file 12 months ago
.gitignore Added gitignore 1 year ago
LICENSE Added licesnse 1 year ago
README.md Removed redundant info from readme 1 year ago
go.mod Fixed import paths 1 year ago

README.md

ARF

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)

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

Compiler Progress

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