packages feed

uAgda-1.1.0.0: RawSyntax.hs

{-# LANGUAGE QuasiQuotes #-}

module RawSyntax where

import Language.LBNF

compile [$cf|


comment "--" ;
comment "{-" "-}" ;

EHole.   Exp6 ::= Hole ;
EVar.    Exp6 ::= AIdent ;
ESet.    Exp6 ::= Sort ;
EParam.  Exp4 ::= Exp4 "!";
EUp.     Exp4 ::= Exp4 "^";
-- ELeft.   Exp4 ::= Exp4 "<";
EDestr.  Exp4 ::= Exp4 "%" Natural ;
EProj.   Exp4 ::= Exp4 "." AIdent ;
EExtr.   Exp4 ::= Exp4 "/" AIdent ;
EApp.    Exp3 ::= Exp3 Exp4 ;
EPi.     Exp2  ::= Exp3 Arrow Exp2 ;
ESigma.  Exp2  ::= Exp3 ";" Exp2 ;
EAbs.    Exp2  ::= "\\" [Bind] Arrow Exp2 ;
EAnn.    Exp1 ::= Exp2 ":" Exp1 ;
EPair.   Exp  ::= Decl "," Exp ;

coercions Exp 6 ;

Decl. Decl ::= AIdent "=" Exp1 ;
PDecl. Decl ::= "param" AIdent "=" Exp1 "::" Exp2;
terminator AIdent "" ;
terminator Decl ";" ;

token Arrow  ('-' '>') | ('=' '>') ;

NoBind. Bind   ::= AIdent ; 
Bind.   Bind   ::= "(" AIdent ":" Exp ")" ;
AIdent. AIdent ::= Identifier ;
terminator Bind "" ;

token Natural digit+;

position token Identifier ('!'|'['|']'|letter|digit|'-'|'_'|'\'')(('*'|'['|']'|letter|digit|'-'|'_'|'\'')*) ;

position token Hole '?' ((letter|digit|'-'|'_'|'\'')*) ;

position token Sort ('#' | '*' (digit*));

|]