Language As A Library, a flexible, portable, and generic frontend for any runtime
812fee19fec6 — Danielle Hutzley default tip 2 years ago
Add number testing
8b2a0bde4774 — Danielle Hutzley 2 years ago
Added tag v0.0.3 for changeset 58af657f2ee3
58af657f2ee3 — Danielle Hutzley v0.0.3 2 years ago
Actually fix single number parsing, should probably test before tagging

heads

tip
browse log
v0.0.3
browse .tar.gz

clone

read-only
https://hg.sr.ht/~hutzdog/liblaal
read/write
ssh://hg@hg.sr.ht/~hutzdog/liblaal

#LibLAAL - A generic programming langage syntax

builds.sr.ht status

#Description

LAAL is a simple syntax for expressing programmes targeted at a variety of purposes. It provides a means to represent programmes both in memory and in text, means to convert between these representations, and means to translate programmes in memory into the data structures a language may use in memory. It is conceptually similar to the Racket, Rebol, and Red languages, but tries to attack the problem through modular and composable design rather than pure homoiconacy.

#Status: Pre-Alpha

  • The API could change at any time, and the language is far from ready for production use

#Roadmap

  • [ ] Stage 1: bootstrap
    • [x] A. LibLAAL parser in C99
    • [ ] B. Systems LAAL in C99 emitting C
  • [ ] Stage 2: self-hosted
    • [ ] A. LibLAAL parser in Systems LAAL
    • [ ] B. Systems LAAL in itself
  • [ ] Stage 3: scripting implementation
    • [ ] A. LibLAARS scripting runtime/VM in Systems LAAL
    • [ ] B. Scripting LAAL in Systems LAAL
  • [ ] Stage 4: tooling
    • [ ] A. LAAB build system (supersceding Muon for building LAAL)
    • [ ] B. LAAD markup (supersceding POD for docs)
    • [ ] C. LibTAAL editor tooling (supersceding handwritten tooling for LAAL)
  • [ ] Unknown
    • [ ] LibLAAG code generator (possible backends: QBE, C, WASM)
      • Postponed until further understanding is gained and Systems LAAL is self-hosted

#Requirements

LibLAAL is written in portable C99 and uses Muon (a C implementation of Meson, though the original can be used) to build. Build dependencies are as follows:

  • Any C99 compatible compiler
    • NOTE: Hints for gcc/clang and msvc can be enabled in configuration
  • Samurai (or any other Ninja-compatible build tool)
  • Muon (or any Meson implementation)
    • NOTE: Some debugging tools require the use of Meson, and Muon does not yet have an uninstall target. If these are important, use the original.
  • Just (optional, used for build scripts)
  • Vagrant (optional, used for development)

#Building

#Configuration

See meson_options.txt

#Build

# or `just setup build`
muon setup build
samu -C build

#Run Tests

# or `just test`
muon -C build test

#Install

  • NOTE: Since Muon does not support the uninstall target currently, you'll probably want to do this using meson install for now
muon -C build install

#Contributing

LAAL is managed on Sourcehut. You can find the project page here, where you can find the other projects, mailing lists, and ticket system. Patches are sent to the ~hutzdog/laal-devel@lists.sr.ht mailing list (see man.sr.ht for more info), the archive of which can be viewed here.

#Licensing

The source code of this repository is mostly licensed under the Mozilla Public License v2.0, the terms of which can be found in LICENSE.

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.