/MUPL

Made Up Programming Language

Primary LanguageScala

MUPL - Made Up Programming Language

MUPL programs are written directly in Scala via descendants of Expr trait. Each Expr type represents some
logic expression connected with his fields.

Implemented types(core):

Var(s) - variable
Num(i) - constant number
Add(e1, e2) - addition of 2 numbers
Mult(e1, e2) - multiplication of 2 numbers
IfGreater(e1, e2, e3, e4) - logical expression, evaluates `e3` if e1>e2, else evaluates `e4`
Fun(name: Option[String], arg: String, body) - function with 1 arg
Call(funExpr, param) - function call with actual parameter
Let(s: String, e, body) - assignment: s=e in body
Pair(e1, e2) - tuple
Fst(e) - pair's first element
Snd(e) - pair's second element
Unit - void (same as scala's Unit)
IsUnit(e) - check if e is Unit

There is no booleans in core implementation(0 and 1 instead), but they can be added as extension for MUPL (See extensions package).
New types can be easily added via OOP




Just for fun. Was inspired by "Programming Languages" course on Coursera