• Stars
    star
    373
  • Rank 114,600 (Top 3 %)
  • Language
    Rust
  • License
    MIT License
  • Created almost 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Standard ML Compiler for the Web

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

Module

not yet implemented

Program

  • Program
    • decl (decl decl ...)
    • expr (expr decl ...)
      • Note: toplevel expression expr should be treated as val it = expr

More Repositories

1

whitelie

A self hosted whitespace compiler
32
star
2

zenekindarl

A fast template engine for Common Lisp
Common Lisp
30
star
3

cargo-pack-docker

a cargo subcommand to package your application into a docker image
Rust
19
star
4

transaction-rs

The transaction abstraction library and its executors for rust
Rust
17
star
5

kappaLisp

SKK Lisp intepreter
Rust
15
star
6

stylefmt.el

cssfmt wrapper for emacs,which is a gofmt like code formatter
Emacs Lisp
12
star
7

chema

generate JSON Schema from a lightweight DSL
Rust
11
star
8

rustlisp

a type level lisp interpreter on Rust's type system
Rust
11
star
9

WebAssembler-rs

An in memory wasm assembler for Rust
Rust
10
star
10

http_server

Rust
8
star
11

SKK_JISYO.wiktionary

Rust
8
star
12

cl-fast-cont

faster partial contiuation library of common lisp
Common Lisp
8
star
13

gtk-examples

Rust
6
star
14

satysfi-rejit

PoC of compiling regex using multi-stage programming
6
star
15

KeenS.github.io

HTML
6
star
16

s7p

sexp version of s6p; a toy SSP.
Clojure
6
star
17

www-authenticate

missing HTTP WWW-Authenticate header parser/printer for hyper 0.10.x
Rust
6
star
18

igaguri

my toy shell written in Rust
Rust
5
star
19

onigmo-rs

Rust binding and Rusty API of Onigmo, regexp engine
Rust
5
star
20

b11d

A toy DSP
Clojure
4
star
21

scala-lisp

a type level lisp intepreter
Scala
4
star
22

sql-drill.el

apache drill suppor for SQL-mode of emacs
Emacs Lisp
4
star
23

epoll-chat

Rust
4
star
24

io-uring-write-file

Rust
3
star
25

pattern-match-compile

Rust
3
star
26

sheltar

A tarball based incremental backup tool written in B shell script.
Shell
3
star
27

dot.files

my configuration files other than .emacs.d
Python
3
star
28

dot.emacs.d

my emacs configuration
Emacs Lisp
3
star
29

idris-deriving

deriving facility for Idris
Idris
3
star
30

smljit

A JIT library for SML#
Standard ML
3
star
31

lisp_alien_icons

lisp alien icons
Shell
2
star
32

cargo-pack

An infrastructure library for `cargo-pack`ers.
Rust
2
star
33

japanese

Rust
2
star
34

pygments.formatters.satysfi

Python
2
star
35

wgpu-compute-sample

Rust
2
star
36

file_logger

a logger library for rust that logs to a file.
Rust
2
star
37

wgsl-mode.el

An emacs major mode for WebGPU Shadring Language
Emacs Lisp
2
star
38

calc

Rust
2
star
39

interp

C
2
star
40

actix-web-condition-middleware

conditionally enable actix middleware
Rust
2
star
41

structenv

Rust
2
star
42

db

my leaning code of http://wombat.cc.tsukuba.ac.jp/~furuse/jikken/
C
1
star
43

RaspPi

LED Blinking by Rust
Rust
1
star
44

zenn.dev

1
star
45

shelldav

A WebDAV CLI
Shell
1
star
46

idris-anagram

Idris
1
star
47

docker-password-aya

Rust
1
star
48

read_sf

Coq
1
star
49

wgpu-wgsl-learner

Rust
1
star
50

iron_inspect

Rust
1
star
51

shttp

an http server written in B Shell Script
Shell
1
star
52

avlset

ATS
1
star
53

opencl-fizzbuzz

GPU accelerated fizzbuzz in OpenCL
C
1
star
54

mirah_sample_gradle

sample mirah project using gradle
Mirah
1
star