change some single-character constructor names
This commit is contained in:
parent
47fca359f4
commit
88985405ce
3 changed files with 158 additions and 140 deletions
|
@ -46,97 +46,104 @@ tests = "lexer" :- [
|
|||
lexes "" [],
|
||||
lexes " " [],
|
||||
lexes "-- line comment" [],
|
||||
lexes "name -- line comment" [I "name"],
|
||||
lexes "-- line comment\nnameBetween -- and another" [I "nameBetween"],
|
||||
lexes "name -- line comment" [Name "name"],
|
||||
lexes "-- line comment\nnameBetween -- and another" [Name "nameBetween"],
|
||||
lexes "{- block comment -}" [],
|
||||
lexes "{- {- nested -} block comment -}" []
|
||||
],
|
||||
|
||||
"identifiers & keywords" :- [
|
||||
lexes "abc" [I "abc"],
|
||||
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", R "def"],
|
||||
lexes "λ" [R "λ"],
|
||||
lexes "fun" [R "λ"],
|
||||
lexes "δ" [R "δ"],
|
||||
lexes "dfun" [R "δ"],
|
||||
lexes "funky" [I "funky"],
|
||||
lexes "δελτα" [I "δελτα"],
|
||||
lexes "★★" [I "★★"],
|
||||
lexes "Types" [I "Types"],
|
||||
lexes "a.b.c.d.e" [I $ MakeName [< "a","b","c","d"] "e"],
|
||||
lexes "normalïse" [I "normalïse"],
|
||||
lexes "map#" [I "map#"],
|
||||
lexes "write!" [I "write!"],
|
||||
lexes "uhh??!?!?!?" [I "uhh??!?!?!?"],
|
||||
lexes "abc" [Name "abc"],
|
||||
lexes "abc def" [Name "abc", Reserved "def"],
|
||||
lexes "abc_def" [Name "abc_def"],
|
||||
lexes "abc-def" [Name "abc-def"],
|
||||
lexes "abc{-comment-}def" [Name "abc", Reserved "def"],
|
||||
lexes "λ" [Reserved "λ"],
|
||||
lexes "fun" [Reserved "λ"],
|
||||
lexes "δ" [Reserved "δ"],
|
||||
lexes "dfun" [Reserved "δ"],
|
||||
lexes "funky" [Name "funky"],
|
||||
lexes "δελτα" [Name "δελτα"],
|
||||
lexes "★★" [Name "★★"],
|
||||
lexes "Types" [Name "Types"],
|
||||
lexes "a.b.c.d.e" [Name $ MakeName [< "a","b","c","d"] "e"],
|
||||
lexes "normalïse" [Name "normalïse"],
|
||||
-- ↑ replace i + combining ¨ with precomposed ï
|
||||
lexes "map#" [Name "map#"],
|
||||
lexes "write!" [Name "write!"],
|
||||
lexes "uhh??!?!?!?" [Name "uhh??!?!?!?"],
|
||||
|
||||
todo "check for reserved words in a qname",
|
||||
-- lexes "abc.fun.def" [I "abc", R ".", R "λ", R ".", I "def"],
|
||||
{-
|
||||
lexes "abc.fun.def"
|
||||
[Name "abc", Reserved ".", Reserved "λ", Reserved ".", Name "def"],
|
||||
-}
|
||||
|
||||
lexes "+" [I "+"],
|
||||
lexes "*" [I "*"],
|
||||
lexes "**" [R "×"],
|
||||
lexes "***" [I "***"],
|
||||
lexes "+**" [I "+**"],
|
||||
lexes "+#" [I "+#"],
|
||||
lexes "+.+.+" [I $ MakeName [< "+", "+"] "+"],
|
||||
lexes "a.+" [I $ MakeName [< "a"] "+"],
|
||||
lexes "+.a" [I $ MakeName [< "+"] "a"],
|
||||
lexes "+" [Name "+"],
|
||||
lexes "*" [Name "*"],
|
||||
lexes "**" [Reserved "×"],
|
||||
lexes "***" [Name "***"],
|
||||
lexes "+**" [Name "+**"],
|
||||
lexes "+#" [Name "+#"],
|
||||
lexes "+.+.+" [Name $ MakeName [< "+", "+"] "+"],
|
||||
lexes "a.+" [Name $ MakeName [< "a"] "+"],
|
||||
lexes "+.a" [Name $ MakeName [< "+"] "a"],
|
||||
|
||||
lexes "+a" [I "+", I "a"],
|
||||
lexes "+a" [Name "+", Name "a"],
|
||||
|
||||
lexes "x." [I "x", R "·"],
|
||||
lexes "&." [I "&", R "·"],
|
||||
lexes ".x" [R "·", I "x"],
|
||||
lexes "a.b.c." [I $ MakeName [< "a", "b"] "c", R "·"],
|
||||
lexes "x." [Name "x", Reserved "·"],
|
||||
lexes "&." [Name "&", Reserved "·"],
|
||||
lexes ".x" [Reserved "·", Name "x"],
|
||||
lexes "a.b.c." [Name $ MakeName [< "a", "b"] "c", Reserved "·"],
|
||||
|
||||
lexes "case" [R "case"],
|
||||
lexes "caseω" [R "caseω"],
|
||||
lexes "case#" [R "caseω"],
|
||||
lexes "case1" [R "case1"],
|
||||
lexes "case0" [I "case0"],
|
||||
lexes "case##" [I "case##"],
|
||||
lexes "case" [Reserved "case"],
|
||||
lexes "caseω" [Reserved "caseω"],
|
||||
lexes "case#" [Reserved "caseω"],
|
||||
lexes "case1" [Reserved "case1"],
|
||||
lexes "case0" [Name "case0"],
|
||||
lexes "case##" [Name "case##"],
|
||||
|
||||
lexes "_" [R "_"],
|
||||
lexes "_a" [I "_a"],
|
||||
lexes "a_" [I "a_"],
|
||||
lexes "_" [Reserved "_"],
|
||||
lexes "_a" [Name "_a"],
|
||||
lexes "a_" [Name "a_"],
|
||||
|
||||
lexes "a'" [I "a'"],
|
||||
lexes "+'" [I "+'"]
|
||||
lexes "a'" [Name "a'"],
|
||||
lexes "+'" [Name "+'"]
|
||||
],
|
||||
|
||||
"syntax characters" :- [
|
||||
lexes "()" [R "(", R ")"],
|
||||
lexes "(a)" [R "(", I "a", R ")"],
|
||||
lexes "(^)" [R "(", I "^", R ")"],
|
||||
lexes "{a,b}" [R "{", I "a", R ",", I "b", R "}"],
|
||||
lexes "{+,-}" [R "{", I "+", R ",", I "-", R "}"]
|
||||
lexes "()" [Reserved "(", Reserved ")"],
|
||||
lexes "(a)" [Reserved "(", Name "a", Reserved ")"],
|
||||
lexes "(^)" [Reserved "(", Name "^", Reserved ")"],
|
||||
lexes "{a,b}"
|
||||
[Reserved "{", Name "a", Reserved ",", Name "b", Reserved "}"],
|
||||
lexes "{+,-}"
|
||||
[Reserved "{", Name "+", Reserved ",", Name "-", Reserved "}"]
|
||||
],
|
||||
|
||||
"tags" :- [
|
||||
lexes #" 'a "# [T "a"],
|
||||
lexes #" 'abc "# [T "abc"],
|
||||
lexes #" '+ "# [T "+"],
|
||||
lexes #" '$$$ "# [T "$$$"],
|
||||
lexes #" 'tag.with.dots "# [T "tag.with.dots"],
|
||||
lexes #" '"multi word tag" "# [T "multi word tag"],
|
||||
lexes #" '"" "# [T ""],
|
||||
lexes #" 'a "# [Tag "a"],
|
||||
lexes #" 'abc "# [Tag "abc"],
|
||||
lexes #" '+ "# [Tag "+"],
|
||||
lexes #" '$$$ "# [Tag "$$$"],
|
||||
lexes #" 'tag.with.dots "# [Tag "tag.with.dots"],
|
||||
lexes #" '"multi word tag" "# [Tag "multi word tag"],
|
||||
lexes #" '"" "# [Tag ""],
|
||||
lexFail #" ' "#,
|
||||
lexFail #" '' "#
|
||||
],
|
||||
|
||||
"strings" :- [
|
||||
lexes #" "" "# [S ""],
|
||||
lexes #" "abc" "# [S "abc"],
|
||||
lexes #" "\"" "# [S "\""],
|
||||
lexes #" "\\" "# [S "\\"],
|
||||
lexes #" "\\\"" "# [S "\\\""],
|
||||
lexes #" "" "# [Str ""],
|
||||
lexes #" "abc" "# [Str "abc"],
|
||||
lexes #" "\"" "# [Str "\""],
|
||||
lexes #" "\\" "# [Str "\\"],
|
||||
lexes #" "\\\"" "# [Str "\\\""],
|
||||
todo "other escapes"
|
||||
],
|
||||
|
||||
todo "naturals",
|
||||
|
||||
"universes" :- [
|
||||
lexes "Type0" [TYPE 0],
|
||||
lexes "Type₀" [TYPE 0],
|
||||
|
@ -144,7 +151,7 @@ tests = "lexer" :- [
|
|||
lexes "★₀" [TYPE 0],
|
||||
lexes "★₆₉" [TYPE 69],
|
||||
lexes "★4" [TYPE 4],
|
||||
lexes "Type" [R "★"],
|
||||
lexes "★" [R "★"]
|
||||
lexes "Type" [Reserved "★"],
|
||||
lexes "★" [Reserved "★"]
|
||||
]
|
||||
]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue