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,
@ -103,9 +104,10 @@ tokens = choice [
simple ["<<", ""] $ P Triangle,
match wild $ const $ P Wild,
keyword "fun" Fun, keyword "λ" Fun,
keyword "let" Let, keyword "in" In,
keyword "case" Case, keyword "of" Of,
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"]
],