/usr/share/doc/frown-doc/examples/manual/Let2.lg is in frown-doc 0.6.1-14.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | %if False
> module Let2 where
> import Lexer
> import Result
>
> data Expr = Const Int | Var String | Bin Expr Op Expr | Let Decl Expr
> deriving (Show)
>
> data Decl = String :=: Expr
> deriving (Show)
>
> %{
>
> Terminal = Numeral {Int}
> | Ident {String}
> | Addop {Op}
> | Mulop {Op}
> | KWLet as "let"
> | KWIn as "in"
> | Equal as "="
> | LParen as "("
> | RParen as ")";
%endif
> left 6 Addop {};
> left 7 Mulop {};
> nonassoc 0 "in";
%if False
> expr {Expr};
> expr {Const n} : Numeral {n};
> {Var s} | Ident {s};
> {Bin e1 op e2} | expr {e1}, Addop {op}, expr {e2};
> {Bin e1 op e2} | expr {e1}, Mulop {op}, expr {e2};
> {Let d e} | "let", decl {d}, "in", expr {e};
> {e} | "(", expr {e}, ")";
>
> decl {Decl};
> decl {s :=: e} : Ident {s}, "=", expr {e};
>
> }%
>
> frown _ = fail "syntax error"
%endif
|