abandon ship
This commit is contained in:
@@ -107,17 +107,17 @@ DataCons :: { [ConAlt RlpcPs] }
|
|||||||
DataCon :: { ConAlt RlpcPs }
|
DataCon :: { ConAlt RlpcPs }
|
||||||
: Con Type1s { undefined }
|
: Con Type1s { undefined }
|
||||||
|
|
||||||
Type1s :: { [Type] }
|
Type1s :: { [RlpType RlpcPs] }
|
||||||
: {- epsilon -} { [] }
|
: {- epsilon -} { [] }
|
||||||
| Type1s Type1 { $1 `snoc` $2 }
|
| Type1s Type1 { $1 `snoc` $2 }
|
||||||
|
|
||||||
Type1 :: { Type }
|
Type1 :: { RlpType' RlpcPs }
|
||||||
: '(' Type ')' { undefined }
|
: '(' Type ')' { $2 }
|
||||||
| conname { undefined }
|
| conname { undefined }
|
||||||
| varname { undefined }
|
| varname { undefined }
|
||||||
|
|
||||||
Type :: { Type }
|
Type :: { RlpType' RlpcPs }
|
||||||
: Type '->' Type { $1 :-> $3 }
|
: Type '->' Type { undefined }
|
||||||
| Type1 { $1 }
|
| Type1 { $1 }
|
||||||
|
|
||||||
FunDecl :: { Decl' RlpcPs }
|
FunDecl :: { Decl' RlpcPs }
|
||||||
@@ -147,7 +147,7 @@ Expr1 :: { RlpExpr' RlpcPs }
|
|||||||
InfixExpr :: { RlpExpr' RlpcPs }
|
InfixExpr :: { RlpExpr' RlpcPs }
|
||||||
: Expr1 varsym Expr { undefined }
|
: Expr1 varsym Expr { undefined }
|
||||||
|
|
||||||
InfixOp :: { PsName }
|
InfixOp :: { Located PsName }
|
||||||
: consym { undefined }
|
: consym { undefined }
|
||||||
| varsym { undefined }
|
| varsym { undefined }
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ module Rlp.Parse.Types
|
|||||||
-- ** Lenses
|
-- ** Lenses
|
||||||
, aiPrevChar, aiSource, aiBytes, aiPos, posLine, posColumn
|
, aiPrevChar, aiSource, aiBytes, aiPos, posLine, posColumn
|
||||||
|
|
||||||
|
, (<<~), (<~>)
|
||||||
|
|
||||||
-- * Error handling
|
-- * Error handling
|
||||||
, MsgEnvelope(..), RlpcError(..), RlpParseError(..)
|
, MsgEnvelope(..), RlpcError(..), RlpParseError(..)
|
||||||
, addFatal, addWound, addFatalHere, addWoundHere
|
, addFatal, addWound, addFatalHere, addWoundHere
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ module Rlp.Syntax
|
|||||||
, Pat(..), Pat'
|
, Pat(..), Pat'
|
||||||
, Assoc(..)
|
, Assoc(..)
|
||||||
, Lit(..), Lit'
|
, Lit(..), Lit'
|
||||||
, Type(..)
|
, RlpType(..), RlpType'
|
||||||
, pattern (:->)
|
|
||||||
, ConAlt(..)
|
, ConAlt(..)
|
||||||
|
|
||||||
-- * Pattern synonyms for unused extensions
|
-- * Pattern synonyms for unused extensions
|
||||||
@@ -21,6 +20,8 @@ module Rlp.Syntax
|
|||||||
, pattern InfixD', pattern FunD', pattern DataD'
|
, pattern InfixD', pattern FunD', pattern DataD'
|
||||||
-- ** RlpExpr
|
-- ** RlpExpr
|
||||||
, pattern ParE', pattern VarE', pattern LitE'
|
, pattern ParE', pattern VarE', pattern LitE'
|
||||||
|
-- ** RlpType
|
||||||
|
, pattern FunT', pattern AppT'
|
||||||
|
|
||||||
-- * Trees That Grow extensions
|
-- * Trees That Grow extensions
|
||||||
, UnXRec(..), MapXRec(..), XRec, IdP
|
, UnXRec(..), MapXRec(..), XRec, IdP
|
||||||
@@ -52,14 +53,37 @@ data RlpModule p = RlpModule
|
|||||||
type PhaseShow p =
|
type PhaseShow p =
|
||||||
( Show (XRec p Pat), Show (XRec p RlpExpr)
|
( Show (XRec p Pat), Show (XRec p RlpExpr)
|
||||||
, Show (XRec p Lit), Show (IdP p)
|
, Show (XRec p Lit), Show (IdP p)
|
||||||
|
, Show (XRec p RlpType)
|
||||||
)
|
)
|
||||||
|
|
||||||
newtype RlpProgram p = RlpProgram [Decl' p]
|
newtype RlpProgram p = RlpProgram [Decl' p]
|
||||||
|
|
||||||
deriving instance (PhaseShow p, Show (XRec p Decl)) => Show (RlpProgram p)
|
deriving instance (PhaseShow p, Show (XRec p Decl)) => Show (RlpProgram p)
|
||||||
|
|
||||||
|
data RlpType p = FunT (XFunT p)
|
||||||
|
| AppT (XAppT p) (RlpType' p) (RlpType' p)
|
||||||
|
| VarT (XVarT p) (IdP p)
|
||||||
|
| ConT (XConT p) (IdP p)
|
||||||
|
|
||||||
|
type RlpType' p = XRec p RlpType
|
||||||
|
|
||||||
|
deriving instance (PhaseShow p, Show (XFunT p), Show (XAppT p), Show (XVarT p)
|
||||||
|
,Show (XConT p))
|
||||||
|
=> Show (RlpType p)
|
||||||
|
|
||||||
|
type family XFunT p
|
||||||
|
type family XAppT p
|
||||||
|
type family XVarT p
|
||||||
|
type family XConT p
|
||||||
|
|
||||||
|
pattern FunT' :: (XFunT p ~ ()) => RlpType p
|
||||||
|
pattern FunT' = FunT ()
|
||||||
|
|
||||||
|
pattern AppT' :: (XAppT p ~ ()) => RlpType' p -> RlpType' p -> RlpType p
|
||||||
|
pattern AppT' s t = AppT () s t
|
||||||
|
|
||||||
data Decl p = FunD (XFunD p) (IdP p) [Pat' p] (RlpExpr' p) (Maybe (Where p))
|
data Decl p = FunD (XFunD p) (IdP p) [Pat' p] (RlpExpr' p) (Maybe (Where p))
|
||||||
| TySigD (XTySigD p) [IdP p] Type
|
| TySigD (XTySigD p) [IdP p] (RlpType' p)
|
||||||
| DataD (XDataD p) (IdP p) [IdP p] [ConAlt p]
|
| DataD (XDataD p) (IdP p) [IdP p] [ConAlt p]
|
||||||
| InfixD (XInfixD p) Assoc Int (IdP p)
|
| InfixD (XInfixD p) Assoc Int (IdP p)
|
||||||
| XDecl !(XXDecl p)
|
| XDecl !(XXDecl p)
|
||||||
@@ -94,9 +118,9 @@ data Assoc = InfixL
|
|||||||
| Infix
|
| Infix
|
||||||
deriving (Show)
|
deriving (Show)
|
||||||
|
|
||||||
data ConAlt p = ConAlt (IdP p) [Type]
|
data ConAlt p = ConAlt (IdP p) [RlpType' p]
|
||||||
|
|
||||||
deriving instance (Show (IdP p)) => Show (ConAlt p)
|
deriving instance (Show (IdP p), Show (XRec p RlpType)) => Show (ConAlt p)
|
||||||
|
|
||||||
data RlpExpr p = LetE (XLetE p) [Binding p] (RlpExpr' p)
|
data RlpExpr p = LetE (XLetE p) [Binding p] (RlpExpr' p)
|
||||||
| VarE (XVarE p) (IdP p)
|
| VarE (XVarE p) (IdP p)
|
||||||
|
|||||||
Reference in New Issue
Block a user