Agda-2.3.2.2: src/prototyping/modules/flat/Syntax.cf
entrypoints Decl1;
layout "where";
comment "--" ;
comment "{-" "-}" ;
token Var letter (letter | digit | '_' | '\'')* ;
Def. Decl ::= Var [Bind] ":" Expr RHS ;
Inst. Decl ::= "module" Var [Bind] "=" Id [Expr2] [Modifier] ;
open. Decl ::= "open" Id [ Modifier ] ;
Open. Decl ::= "open" Id Access [ Modifier ] ;
_. Decl ::= Decl1 ;
Module. Decl1 ::= "module" Var [Bind] "where" "{" [Decl] "}" ;
define open x mods = Open x Private mods ;
NoRHS. RHS ::= ;
RHS. RHS ::= "=" Expr Where ;
NoWhere. Where ::= ;
AnyWhere. Where ::= "where" "{" [Decl] "}" ;
SomeWhere. Where ::= "module" Var [Bind] "where" "{" [Decl] "}" ;
Renaming. Modifier ::= "renaming" "(" [Renaming] ")" ;
Using. Modifier ::= "using" "(" [ImportName] ")" ;
Hiding. Modifier ::= "hiding" "(" [ImportName] ")" ;
To. Renaming ::= ImportName "to" Var;
ImportDef. ImportName ::= Var ;
ImportMod. ImportName ::= "module" Var ;
Public. Access ::= "public" ;
Private. Access ::= "private" ;
Pi. Expr ::= "(" Var ":" Expr ")" "->" Expr ;
fun. Expr ::= Expr1 "->" Expr ;
Lam. Expr ::= "\\" Var "->" Expr ;
App. Expr1 ::= Expr1 Expr2 ;
Name. Expr2 ::= Id ;
Set. Expr2 ::= "Set" ;
Id. Id ::= [Var];
Bind. Bind ::= "(" Var ":" Expr ")" ;
define fun a b = Pi (Var "_") a b ;
coercions Expr 2;
separator Decl ";";
separator nonempty Var ".";
separator Expr2 "";
separator Bind "";
separator Modifier "";
separator Renaming ";";
separator ImportName ";";