update bindingssterkte
[cc1516.git] / src / grammar.txt
1 <Expr> ::= <ExprWithoutOp> <ExprMaybeOp>
2
3
4 <ExprMaybeOp> ::= '+' <Expr>
5
6 <ModExpr> ::= <PlusMinExpr> ['%' <ModExpr>]
7
8 <PlusMinExpr> ::= <TimesDivExpr> [('+' | '-') <PlusMinExpr>]
9
10 <TimesDivExpr> ::= <BasicExpr> ['*' | '/' | '%'] <TimesDivExpr>]
11
12 <BasicExpr> ::= <id> ['hd'|'tl'|'fst'|'snd]
13 | <Op1> <Expr>
14 | <int>
15 | <char>
16 | 'False'
17 | 'True'
18 | '(' <Expr> ')'
19 | <id> '(' [<ActArgs>] ')'
20 | '[]' <Expr>
21 | '(' <Expr> ',' <Expr> ')'
22
23 <Op2> ::= '+' | '-' | '*' | '/' | '%' | '==' | '<' | '>' | '<=' | '>='
24 | '!=' | '&&' | '||' | ':'
25
26 <ActArgs> ::= <Expr> [',' ActArgs]
27
28 <VarDecl> ::= (<Type> | 'var') <id> '=' <Expr> ';'
29
30 <Type> ::= 'Int'
31 | 'Bool'
32 | 'Char'
33 | '(' Type ',' Type ')'
34 | '[' Type ']'
35 | <id>