Parens removed on types and infix symbols work almost, just need to adapt in LLVM
This commit is contained in:
parent
c309c439cb
commit
0dc06eaf80
10 changed files with 494 additions and 437 deletions
14
Grammar.cf
14
Grammar.cf
|
|
@ -22,12 +22,14 @@ internal Bind. Bind ::= LIdent [LIdent] "=" Exp;
|
|||
-- * Types
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
TLit. Type1 ::= UIdent; -- τ
|
||||
TVar. Type1 ::= TVar; -- α
|
||||
internal TEVar. Type1 ::= TEVar; -- ά
|
||||
TData. Type1 ::= UIdent "(" [Type] ")"; -- D ()
|
||||
TFun. Type ::= Type1 "->" Type; -- A → A
|
||||
internal TLit. Type3 ::= UIdent; -- τ
|
||||
TIdent. Type3 ::= UIdent;
|
||||
TVar. Type3 ::= TVar; -- α
|
||||
TApp. Type2 ::= Type2 Type3 ;
|
||||
TFun. Type1 ::= Type1 "->" Type; -- A → A
|
||||
TAll. Type ::= "forall" TVar "." Type; -- ∀α. A
|
||||
internal TEVar. Type1 ::= TEVar; -- ά
|
||||
internal TData. Type1 ::= UIdent "(" [Type] ")"; -- D ()
|
||||
|
||||
MkTVar. TVar ::= LIdent;
|
||||
internal MkTEVar. TEVar ::= LIdent;
|
||||
|
|
@ -98,7 +100,7 @@ separator nonempty Pattern1 " ";
|
|||
|
||||
coercions Pattern 1;
|
||||
coercions Exp 4;
|
||||
coercions Type 1 ;
|
||||
coercions Type 3 ;
|
||||
|
||||
token UIdent (upper (letter | digit | '_')*) ;
|
||||
token LIdent (lower (letter | digit | '_')*) ;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue