why did i do this to myself

This commit is contained in:
crumbtoo
2024-02-20 11:26:35 -07:00
parent eb165c99fa
commit 2858cff882
2 changed files with 22 additions and 23 deletions

View File

@@ -146,48 +146,46 @@ Params : {- epsilon -} { [] }
| Params Pat1 { $1 `snoc` $2 }
Pat :: { Pat RlpcPs }
: Con Pat1s { $1 }
| Pat1 { undefined }
: Con Pat1s { ConP $1 $2 }
| Pat1 { $1 }
Pat1s :: { [Pat RlpcPs] }
: Pat1s Pat1 { undefined }
| Pat1 { undefined }
: Pat1s Pat1 { $1 `snoc` $2 }
| Pat1 { [$1] }
Pat1 :: { Pat RlpcPs }
: Con { undefined }
| Var { undefined }
| Lit { undefined }
| '(' Pat ')' { undefined }
: Con { ConP $1 [] }
| Var { VarP $1 }
| Lit { LitP $1 }
| '(' Pat ')' { $2 }
Expr :: { Expr' RlpcPs SrcSpan }
-- infixities delayed till next release :(
-- : Expr1 InfixOp Expr { undefined }
: AppExpr { $1 }
-- | TempInfixExpr { undefined }
-- | LetExpr { undefined }
-- | CaseExpr { undefined }
| TempInfixExpr { $1 }
| LetExpr { $1 }
| CaseExpr { $1 }
TempInfixExpr :: { Expr' RlpcPs SrcSpan }
TempInfixExpr : Expr1 InfixOp TempInfixExpr { undefined }
| Expr1 InfixOp Expr1 { undefined }
TempInfixExpr : Expr1 InfixOp TempInfixExpr {% tempInfixExprErr }
| Expr1 InfixOp Expr1 { nolo' $ InfixEF $2 $1 $3 }
AppExpr :: { Expr' RlpcPs SrcSpan }
: Expr1 { $1 }
| AppExpr Expr1 { comb2 AppEF $1 $2 }
LetExpr :: { Expr RlpcPs }
: let layout1(Binding) in Expr { undefined }
| letrec layout1(Binding) in Expr { undefined }
LetExpr :: { Expr' RlpcPs SrcSpan }
: let layout1(Binding) in Expr { nolo' $ LetEF NonRec $2 $4 }
| letrec layout1(Binding) in Expr { nolo' $ LetEF Rec $2 $4 }
CaseExpr :: { Expr RlpcPs }
: case Expr of layout0(CaseAlt) { undefined }
CaseExpr :: { Expr' RlpcPs SrcSpan }
: case Expr of layout0(Alt) { nolo' $ CaseEF $2 $4 }
-- TODO: where-binds
CaseAlt :: { (Alt RlpcPs, Where RlpcPs) }
: Alt { undefined }
Alt :: { Alt RlpcPs }
: Pat '->' Expr { undefined }
: Pat '->' Expr { AltA $1 (collapse . strip $ $3)
Nothing }
-- layout0(p : β) :: [β]
layout0(p) : '{' layout_list0(';',p) '}' { $2 }
@@ -234,7 +232,7 @@ Con :: { PsName }
{
parseRlpProgR = undefined
parseRlpProgR :: Text -> RLPCT m (Program )
parseRlpExprR = undefined
mkInfixD :: Assoc -> Int -> PsName -> P (Decl RlpcPs SrcSpan)

View File

@@ -12,6 +12,7 @@ module Rlp.Syntax.Types
, Ty(..)
, Binding(..)
, Expr(..), Expr', ExprF(..)
, Rec(..)
, Lit(..)
, Pat(..)
, Decl(..)