repositories
/
cc1516.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
parsing lambdas
[cc1516.git]
/
grammar
/
grammar.txt
diff --git
a/grammar/grammar.txt
b/grammar/grammar.txt
index
e63a3f6
..
b399311
100644
(file)
--- a/
grammar/grammar.txt
+++ b/
grammar/grammar.txt
@@
-11,6
+11,7
@@
| 'return' [<Expr>] ';'
<VarDecl> ::= <Type> <id> '=' <Expr> ';'
<Expr> ::= <BinOrExpr> [':' <Expr>]
| 'return' [<Expr>] ';'
<VarDecl> ::= <Type> <id> '=' <Expr> ';'
<Expr> ::= <BinOrExpr> [':' <Expr>]
+ | <LambdaExpr>
<BinOrExpr> ::= <BinAndExpr> ['||' <BinOrExpr>]
<BinAndExpr> ::= <CompareExpr> ['&&' <BinAndExpr>]
<CompareExpr> ::= <PlusMinExpr> [('==' | '<' | '>' | '<=' | '>=' | '!=') <CompareExpr>]
<BinOrExpr> ::= <BinAndExpr> ['||' <BinOrExpr>]
<BinAndExpr> ::= <CompareExpr> ['&&' <BinAndExpr>]
<CompareExpr> ::= <PlusMinExpr> [('==' | '<' | '>' | '<=' | '>=' | '!=') <CompareExpr>]
@@
-26,6
+27,7
@@
| '[]' <Expr>
| '(' <Expr> ',' <Expr> ')'
| '"' <char> '"'
| '[]' <Expr>
| '(' <Expr> ',' <Expr> ')'
| '"' <char> '"'
+<LamdaExpr> ::= '\'<id>+ '->' <Expr>
<FieldSels> ::= ('.' ('hd'|'tl'|'fst'|'snd))*
<FunCall> ::= <id> ['(' <ActArgs>+ ')']
<ActArgs> ::= <Expr> [',' ActArgs]
<FieldSels> ::= ('.' ('hd'|'tl'|'fst'|'snd))*
<FunCall> ::= <id> ['(' <ActArgs>+ ')']
<ActArgs> ::= <Expr> [',' ActArgs]