The ARF programming language
This repository has been archived on 2024-02-27. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Sasha Koshka a5b1385012 Some error message tweaks 2022-10-16 02:58:31 -04:00
analyzer Some error message tweaks 2022-10-16 02:58:31 -04:00
arfc Fixed import paths 2022-08-30 01:11:10 -04:00
assets Update heatmap 2022-09-05 13:49:15 -04:00
examples Updated example code 2022-09-17 12:33:52 -04:00
file Enum member names and values must be unique 2022-10-14 04:00:05 -04:00
infoerr Parser now sets type member location 2022-10-12 12:39:00 -04:00
lexer Some error message tweaks 2022-10-16 02:58:31 -04:00
parser Untested enum analysis 2022-10-13 18:02:35 -04:00
testCommon Moved testing utilities to its own package 2022-09-17 13:39:29 -04:00
tests Untested data section analysis 2022-10-16 02:53:37 -04:00
translator Create translator stub 2022-10-12 00:58:58 -04:00
types Iterator actually advances now 2022-09-29 17:34:51 -04:00
.editorconfig Added editorconfig file 2022-10-05 17:35:55 -04:00
.gitignore Added gitignore 2022-08-08 03:08:20 -04:00
LICENSE Added licesnse 2022-08-09 01:02:03 -04:00
README.md Removed redundant info from readme 2022-09-19 01:28:56 -04:00
go.mod Fixed import paths 2022-08-30 01:11:10 -04:00

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