quasiquoters
This commit is contained in:
@@ -4,6 +4,9 @@ module Core.Parse
|
||||
, parseCoreExpr
|
||||
, module Core.Lex -- temp convenience
|
||||
, parseTmp
|
||||
, SrcError
|
||||
, ParseError
|
||||
, Module
|
||||
)
|
||||
where
|
||||
|
||||
@@ -15,7 +18,7 @@ import Compiler.RLPC
|
||||
}
|
||||
|
||||
%name parseCore Module
|
||||
%name parseCoreExpr Expr
|
||||
%name parseCoreExpr StandaloneExpr
|
||||
%tokentype { Located CoreToken }
|
||||
%error { parseError }
|
||||
%monad { RLPC ParseError }
|
||||
@@ -75,6 +78,9 @@ ParList :: { [Name] }
|
||||
ParList : Var ParList { $1 : $2 }
|
||||
| {- epsilon -} { [] }
|
||||
|
||||
StandaloneExpr :: { Expr }
|
||||
StandaloneExpr : Expr eof { $1 }
|
||||
|
||||
Expr :: { Expr }
|
||||
Expr : LetExpr { $1 }
|
||||
| 'λ' Binders '->' Expr { Lam $2 $4 }
|
||||
@@ -141,5 +147,6 @@ parseTmp = do
|
||||
Right (ts,_) -> pure ts
|
||||
where
|
||||
parse = evalRLPC RLPCOptions . (lexCore >=> parseCore)
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user