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 2669a04857 Enum member names and values must be unique 2022-10-14 04:00:05 -04:00
analyzer Enum member names and values must be unique 2022-10-14 04:00:05 -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 Made documentation a bit better 2022-10-12 00:48:55 -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 Enum member names and values must be unique 2022-10-14 04:00:05 -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