glebbash / LO

LO - small programming language targeting WASM that aims to be as simple as possible

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LO - small programming language targeting WASM that aims to be as simple as possible

πŸ† Goals

  • Make both the language and the compiler small and easy to understand
  • Have little to no dependencies
  • Be easy to use and modify
  • Emit WASM to have the biggest target coverage with little code

πŸͺ΅ Development Log

🧾 Parts [0..6] - Building the initial compiler. (text based blog)

πŸ“Ί Parts [7..] - Building the self-hosted compiler. (YouTube playlist)

✍️ Documentation

Documentation is available in docs folder.

πŸ‘€ Examples

Check out example .lo programs including standard library sources and WIP self-hosted compiler in the ./examples folder.

Here are some of them with syntax highlighting from the LO VS Code extension:

Hello World sample

AOC 2020 sample

Dark Maze gif

πŸš€ Getting started

1️⃣ Using VS Code extension (recommended)

This option also works in vscode.dev

  • Install the LO VS Code extension
  • To create a new project: Open empty folder, execute Command Palette: LO: Initialize project in current workspace
  • To run currently open file: execute Command Palette: LO: Run current file, or press ▢️ button in the top toolbar
  • Compiling files:
    • Open Web Shell: execute Command Palette: Terminal: Create New Web Shell
    • Run: run lo.wasm <input>.lo > <output>.wasm

2️⃣ Using wasmtime

  • Install wasmtime
  • Compiling files: wasmtime --dir=. lo.wasm <input>.lo > <output>.wasm
  • Getting diagnostics (in json format): wasmtime --dir=. lo.wasm <input>.lo --inspect

3️⃣ Using Node.js

  • Install Node.js
  • Compiling files: ./utils.mjs compile <input>.lo > <output>.wasm
  • Compiling & running files: ./utils.mjs run <input>.lo

Additional info on compiler usage is in the docs

πŸ”¦ VSCode extension

Available on:

See Inspection if you are interested in intergrating with other IDEs

❔ More info

More info including building initial compiler and running tests is available in the docs

About

LO - small programming language targeting WASM that aims to be as simple as possible

License:MIT License


Languages

Language:Rust 81.5%Language:JavaScript 11.7%Language:TypeScript 6.5%Language:Shell 0.2%