No description
  • CSS 90.7%
  • Java 9.3%
Find a file
2025-02-04 08:33:21 +00:00
IBAF-cbs Format files 2024-08-20 13:07:28 +02:00
IBAF-Editor Collect all declared variables at start of program execution 2024-04-16 08:12:52 +02:00
IBAF-Tests Collect all declared variables at start of program execution 2024-04-16 08:12:52 +02:00
.gitignore remove .idea folder 2024-04-16 08:14:42 +02:00
readme.md fix typo in readme 2025-02-04 08:33:21 +00:00

IBAFlang (Imperative But Also Functional language)

This repo contains the language definition for IBAF, a language defined in the CBS meta-language. CBS's component-based approach allowed me to define this language with relative ease and generate an editor for syntax highlighting. I highly recommend checking out the project at this URL.

As you may realise from reading the language definition, the language for now is more I than F. That's why this is just version 0.1 of IBAF. If you're interested in seeing how a more complex language can be defined, I recommend taking a look at the language definitions for MiniJava or OCaml-Light.

Project structure

In the repo there are three projects that can be opened in Spoofax

  • IBAF-cbs is the project that contains the source .cbs files that defines the language.
  • IBAF-Editor is the Spoofax project that can be used to build the IDE for IBAF.
  • IBAF-Tests is a project containing some example programs and the funcon terms they compile to.

To actually compile the language yourself you will need to set up the CBS workbench locally. You can find out more on the CBS-IDE page

Some relevant papers: