All Projects → KeenS → Webml

KeenS / Webml

Licence: mit
A Standard ML Compiler for the Web

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Webml

Asterius
A Haskell to WebAssembly compiler
Stars: ✭ 1,799 (+451.84%)
Mutual labels:  compiler, webassembly
Wah
a slightly higher-level language superset of webassembly
Stars: ✭ 147 (-54.91%)
Mutual labels:  compiler, webassembly
Grain
The Grain compiler toolchain and CLI. Home of the modern web staple. 🌾
Stars: ✭ 2,199 (+574.54%)
Mutual labels:  compiler, webassembly
Viper
[WIP] A Pythonesque language with a design that focuses on efficiency and expressiveness. Compiles to WebAssembly
Stars: ✭ 23 (-92.94%)
Mutual labels:  compiler, webassembly
Ppci
A compiler for ARM, X86, MSP430, xtensa and more implemented in pure Python
Stars: ✭ 210 (-35.58%)
Mutual labels:  compiler, webassembly
Wasm Forth
A Forth implementation compiling to WebAssembly.
Stars: ✭ 92 (-71.78%)
Mutual labels:  compiler, webassembly
Assemblyscript
A TypeScript-like language for WebAssembly.
Stars: ✭ 13,152 (+3934.36%)
Mutual labels:  compiler, webassembly
Walt
⚡ Walt is a JavaScript-like syntax for WebAssembly text format ⚡
Stars: ✭ 4,513 (+1284.36%)
Mutual labels:  compiler, webassembly
Binaryen.js
A buildbot for binaryen.js, a port of Binaryen to the Web, with TypeScript support.
Stars: ✭ 201 (-38.34%)
Mutual labels:  compiler, webassembly
Prototype
(deprecated) The journey continues at ASNEXT: https://github.com/AssemblyScript/assemblyscript
Stars: ✭ 2,114 (+548.47%)
Mutual labels:  compiler, webassembly
Ring
Innovative and practical general-purpose multi-paradigm language
Stars: ✭ 716 (+119.63%)
Mutual labels:  compiler, webassembly
Cone
Cone Programming Language
Stars: ✭ 257 (-21.17%)
Mutual labels:  compiler, webassembly
Webassemblyjs
Toolchain for WebAssembly
Stars: ✭ 566 (+73.62%)
Mutual labels:  compiler, webassembly
Evm2wasm
[ORPHANED] Transcompiles EVM code to eWASM
Stars: ✭ 96 (-70.55%)
Mutual labels:  compiler, webassembly
Turboscript
Super charged typed JavaScript dialect for parallel programming which compiles to WebAssembly
Stars: ✭ 487 (+49.39%)
Mutual labels:  compiler, webassembly
Naskah
Bahasa pemrograman dengan sintaks Bahasa Indonesia (Programming language with Indonesian syntax) 🇮🇩
Stars: ✭ 132 (-59.51%)
Mutual labels:  compiler, webassembly
Bytecoder
Rich Domain Model for JVM Bytecode and Framework to interpret and transpile it.
Stars: ✭ 401 (+23.01%)
Mutual labels:  compiler, webassembly
Jwebassembly
Java bytecode to WebAssembly compiler
Stars: ✭ 426 (+30.67%)
Mutual labels:  compiler, webassembly
Wag
WebAssembly compiler implemented in Go
Stars: ✭ 177 (-45.71%)
Mutual labels:  compiler, webassembly
Customasm
💻 An assembler for custom, user-defined instruction sets! https://hlorenzi.github.io/customasm/web/
Stars: ✭ 211 (-35.28%)
Mutual labels:  compiler, webassembly

WebML -- A Standard ML compiler for the Web

Build Status

WebML is to be a Standard ML (SML '97) Compiler that works on web browsers and generates WebAssembly binaries. WebAssembly binaries can be run on web browsers. This means you can run SMl REPL on web browsers.

Status

Under very early stage of initial development. Compiles only minimal subset of SML codes. The garbage collector is not complete.

Links

Implemented features

Core

  • Declaration
    • [ ] val
      • [x] basic (val ident = expr)
      • [x] pattern (val pat = expr)
      • [ ] tyvar val 'a pat = expr
      • [ ] typed (val pat : ty = expr)
      • [ ] and (val pat = expr and pat = expr)
    • [ ] fun
      • [x] basic (fun ident ident ... = expr)
      • [x] pattern (fun ident pat ... = expr)
      • [x] multi-clause (fun ident pat ... = expr | ident pat ... = expr)
      • [x] op (fun op ident pat ... = expr)
      • [ ] tyvar (fun 'a ident pat ... = expr)
      • [ ] typed (fun ident pat ... : ty = expr)
      • [ ] and (fun ident pat ... = expr and ident pat ... = expr)
    • [ ] type (type ident = ty)
    • [ ] datatype
      • [ ] datatype ident = Con of ty | Con ...
        • [x] basic (datatype ident = Con of ty | Con ...)
        • [ ] tyvar (datatype 'a ident = Con of ty | Con ...)
        • [ ] and (datatype ident = Con | ... and ident = Con | ...)
        • [ ] withtype (datatype ident = Con ... withtype ..)
      • [ ] datatype ident = datatype ident
    • [ ] abstype
    • [ ] exception
    • [ ] local ... in ... end
    • [ ] open ..
    • [ ] decl ; decl
      • [x] decl decl
      • [ ] decl ; decl
    • [x] infix
    • [ ] infixr
    • [ ] nofix
  • Expressions
    • [ ] special constant
      • [x] integer
      • [ ] real
        • [x] 123.456
        • [ ] 123e456
        • [ ] 123E456
        • [ ] 123e~456
      • [ ] word
      • [x] char
      • [ ] string
    • [x] value identifier
    • [ ] op
    • [ ] record
      • [ ] basic ({ label = expr , ...})
      • [x] tuple
      • [x] 0-tuple
      • [ ] #label
    • [ ] list ([expr, ..., expr])
    • [ ] (expr; ...; expr)
    • [x] paren ((expr))
    • [ ] let .. in .. end
      • [x] basic (let decl ... in expr end)
      • [ ] derived (let decl ... in expr; ...; expr end)
    • [x] function application
    • [ ] infix operator
      • [x] L
      • [ ] R
    • [ ] typed (exp : ty)
    • [ ] exception
      • [ ] handle
      • [ ] raise
    • [ ] fn
      • [x] basic (fn ident => expr)
      • [ ] pattern (fn pat => expr)
      • [ ] multi-clause fn pat => expr | pat => expr ...
    • [ ] andalso
    • [ ] orelse
    • [x] if .. then .. else
    • [ ] while .. do ..
    • [x] case .. of ..
  • Pattern
    • [x] wildcard
    • [ ] special constant
      • [x] integer
      • [ ] word
      • [x] char
      • [ ] string
    • [x] value identifier
    • [ ] op
    • [ ] record
      • [ ] basic ({ label = pat , ...})
      • [ ] wildcard (...)
      • [ ] label as variable ({ var (as pat), ...})
      • [x] tuple
      • [x] 0-tuple
    • [ ] list
    • [x] paren
    • [x] Constructor
    • [ ] infix
    • [ ] typed (pat : ty)
    • [ ] layerd (ident as pat)
  • Type
    • [ ] type variable
    • [ ] record
    • [ ] type construction
      • [x] without param (ident)
      • [ ] with param (ty ident)
    • [x] tuple
    • [x] function
    • [x] paren
  • Initial Basis
    • [x] unit
    • [x] bool
      • [x] true
      • [x] false
    • [x] int
    • [ ] word
    • [ ] string
    • [x] char
    • [ ] list
      • [ ] nil
      • [ ] ::
    • [ ] ref
      • [ ] ref
      • [ ] :=
    • [ ] exn
    • [x] =
    • [ ] Match
    • [ ] Bind
  • Overloaded
    • [x] +
    • [x] -
    • [x] *
    • [x] div
    • [x] mod
    • [x] /
    • [x] <
    • [x] >
    • [x] <=
    • [x] >=
    • [ ] abs
    • [ ] ~

Module

not yet implemented

Program

  • Program
    • [x] decl (decl decl ...)
    • [ ] expr (expr decl ...)
      • Note: toplevel expression expr should be treated as val it = expr
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].