lex . and ω (and #)

This commit is contained in:
rhiannon morris 2022-05-06 21:35:04 +02:00
parent 49c43ad296
commit 1dd4ff0e22
3 changed files with 10 additions and 4 deletions

View file

@ -96,6 +96,7 @@ tokens = choice [
simple [","] $ P Comma,
simple ["::", ""] $ P DblColon,
simple [":"] $ P Colon, -- needs to be after "::"
simple ["."] $ P Dot,
simple ["->", ""] $ P Arrow,
simple ["=>", ""] $ P DblArrow,
@ -106,6 +107,7 @@ tokens = choice [
keyword "fun" Fun, keyword "λ" Fun,
keyword "let" Let, keyword "in" In,
keyword "case" Case, keyword "of" Of,
keyword "ω" Omega, simple ["#"] $ K Omega,
match name $ Name,
match symbol $ Symbol . assert_total strTail,

View file

@ -13,6 +13,7 @@ data Punc
| LBrace | RBrace
| Comma
| Colon | DblColon
| Dot
| Arrow | DblArrow
| Times | Triangle
| Wild
@ -22,7 +23,7 @@ data Punc
public export
data Keyword
= Fun | Let | In | Case | Of
= Fun | Let | In | Case | Of | Omega
%runElab derive "Keyword" [Generic, Meta, Eq, Ord, DecEq, Show]

View file

@ -113,6 +113,7 @@ tests = "lexer" :- [
acceptsWith' "'a" [Symbol "a"],
acceptsWith' "'ab" [Symbol "ab"],
acceptsWith' "'_b" [Symbol "_b"],
acceptsWith' "a.b.c" [Name "a", P Dot, Name "b", P Dot, Name "c"],
rejects' "'",
rejects' "1abc"
],
@ -124,6 +125,8 @@ tests = "lexer" :- [
acceptsWith' "in" [K In],
acceptsWith' "case" [K Case],
acceptsWith' "of" [K Of],
acceptsWith' "ω" [K Omega],
acceptsWith' "#" [K Omega],
acceptsWith' "funk" [Name "funk"]
],