mirror of
https://github.com/luau-lang/luau.git
synced 2025-05-04 10:33:46 +01:00
37 lines
748 B
Agda
37 lines
748 B
Agda
module Luau.Syntax where
|
|
|
|
open import Luau.Var using (Var)
|
|
open import Luau.Addr using (Addr)
|
|
open import Luau.Type using (Type)
|
|
|
|
infixr 5 _∙_
|
|
|
|
data VarDec : Set where
|
|
var : Var → VarDec
|
|
var_∈_ : Var → Type → VarDec
|
|
|
|
name : VarDec → Var
|
|
name (var x) = x
|
|
name (var x ∈ T) = x
|
|
|
|
data Block : Set
|
|
data Stat : Set
|
|
data Expr : Set
|
|
|
|
data Block where
|
|
_∙_ : Stat → Block → Block
|
|
done : Block
|
|
|
|
data Stat where
|
|
function_⟨_⟩_end : Var → VarDec → Block → Stat
|
|
local_←_ : VarDec → Expr → Stat
|
|
return : Expr → Stat
|
|
|
|
data Expr where
|
|
nil : Expr
|
|
var : Var → Expr
|
|
addr : Addr → Expr
|
|
_$_ : Expr → Expr → Expr
|
|
function⟨_⟩_end : VarDec → Block → Expr
|
|
block_is_end : Var → Block → Expr
|
|
|