Skip to content

bweir/lame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7394040 · Sep 6, 2022

History

27 Commits
Nov 24, 2020
Nov 29, 2020
Nov 29, 2020
Nov 28, 2020
Nov 28, 2020
Nov 29, 2020
Nov 29, 2020
Nov 29, 2020
Nov 24, 2020
Nov 22, 2020
Nov 22, 2020
Nov 24, 2020
Nov 22, 2020
Nov 28, 2020
Nov 28, 2020
Sep 6, 2022

Repository files navigation

lame compiler suite

I'm making a Spin compiler. Why?

  • Spin is an interesting language for its limitations

  • LameStation has years of content built around a subset of Spin

  • The ecosystem is fragmented and not fully specified

  • A documented lexer/parser would enable many kinds of analyses

  • This gives me an excuse to learn Go

Notes:

Usage

lame COMMAND [OPTIONS]

Goals

  • To compile Spin objects:

    lame build
    
  • To load Spin objects over serial:

    lame load
    
  • To enable a live build/load/debug cycle over serial

    lame dev
    
  • To reformat Spin code accurately:

    lame fmt
    
  • To generate documentation from any Spin object:

    lame doc
    
  • To push and pull Spin objects to/from a remote repo:

    # upload an object to the repo
    lame up
    
    # pull an object
    lame down pst=1.0.0
  • To support multiple code generator backends (Propeller VM?)

Finer Goals

  • To write a (semi-)formal specification for the Spin language

  • To perform code generation for the Propeller 1

  • To support an alternative VM target for desktop / browser use

  • To support direct addressing via the @ symbol

  • To add a path system to Spin:

    OBJ
        obj : "path.to.module"
    
  • To add automatic constant folding

  • To reduce the number of operators / keywords

Roadmap

  • Identity - Translate the input to the AST and re-emit to the output

  • Reverse engineer Propeller binary format

About

Lame language compiler

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published