add definitions to parser

This commit is contained in:
rhiannon morris 2023-03-06 11:35:57 +01:00
parent ab2508e0ce
commit 757ea89b0f
9 changed files with 199 additions and 29 deletions

View file

@ -54,10 +54,10 @@ tests = "lexer" :- [
"identifiers & keywords" :- [
lexes "abc" [I "abc"],
lexes "abc def" [I "abc", I "def"],
lexes "abc def" [I "abc", R "def"],
lexes "abc_def" [I "abc_def"],
lexes "abc-def" [I "abc-def"],
lexes "abc{-comment-}def" [I "abc", I "def"],
lexes "abc{-comment-}def" [I "abc", R "def"],
lexes "λ" [R "λ"],
lexes "fun" [R "λ"],
lexes "δ" [R "δ"],

View file

@ -237,5 +237,25 @@ tests = "parser" :- [
Case Any (V "t") (Nothing, V "A") (CaseEnum []),
parsesAs term "case# t return A of {}" $
Case Any (V "t") (Nothing, V "A") (CaseEnum [])
],
"definitions" :- [
parsesAs definition "defω x : (_: {a}) × {b} ≔ ('a, 'b);" $
MkPDef Any "x" (Sig Nothing (Enum ["a"]) (Enum ["b"]))
(Pair (Tag "a") (Tag "b")),
parsesAs definition "def# x : (_: {a}) ** {b} ≔ ('a, 'b);" $
MkPDef Any "x" (Sig Nothing (Enum ["a"]) (Enum ["b"]))
(Pair (Tag "a") (Tag "b")),
parsesAs definition "def ω·x : (_: {a}) × {b} ≔ ('a, 'b);" $
MkPDef Any "x" (Sig Nothing (Enum ["a"]) (Enum ["b"]))
(Pair (Tag "a") (Tag "b")),
parsesAs definition "def x : (_: {a}) × {b} ≔ ('a, 'b);" $
MkPDef Any "x" (Sig Nothing (Enum ["a"]) (Enum ["b"]))
(Pair (Tag "a") (Tag "b")),
parsesAs definition "def0 A : ★₀ ≔ {a, b, c};" $
MkPDef Zero "A" (TYPE 0) (Enum ["a", "b", "c"]),
parsesAs input "def0 A : ★₀ ≔ {}; def0 B : ★₁ ≔ A;" $
[MkPDef Zero "A" (TYPE 0) (Enum []),
MkPDef Zero "B" (TYPE 1) (V "A")]
]
]