Skip to content

Commit 209e555

Browse files
committed
Add a human friendly grammar.
1 parent 8d5baa9 commit 209e555

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

bnf/Ds.cf

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
-- This file could be used with https://bnfc.digitalgrammars.com/
2+
3+
entrypoints [Rule] ;
4+
5+
comment "//" ;
6+
7+
token Identity ["!\"#$%&'*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~"] + ;
8+
-- all char except ()`
9+
10+
LogicalOr. Term1 ::= Term1 "||" Term2 ;
11+
LogicalAnd. Term2 ::= Term2 "&&" Term3 ;
12+
BitwiseInclusiveOr. Term3 ::= Term3 "|" Term4 ;
13+
BitwiseExclusiveOr. Term4 ::= Term4 "^" Term5 ;
14+
BitwiseAnd. Term5 ::= Term5 "&" Term6 ;
15+
Equality. Term6 ::= Term6 "==" Term7 ;
16+
Inequality. Term6 ::= Term6 "!=" Term7 ;
17+
LessThan. Term7 ::= Term7 "<" Term8 ;
18+
GreaterThan. Term7 ::= Term7 ">" Term8 ;
19+
LessThanOrEqualTo. Term7 ::= Term7 "<=" Term8 ;
20+
GreaterThanOrEqualTo. Term7 ::= Term7 ">=" Term8 ;
21+
LeftShift. Term8 ::= Term8 "<<" Term9 ;
22+
RightShift. Term8 ::= Term8 ">>" Term9 ;
23+
Addition. Term9 ::= Term9 "+" Term10 ;
24+
Subtraction. Term9 ::= Term9 "-" Term10 ;
25+
Multiplication. Term10 ::= Term10 "*" Term11 ;
26+
Division. Term10 ::= Term10 "/" Term11 ;
27+
Modulus. Term10 ::= Term10 "%" Term11 ;
28+
Complement. Term11 ::= "~" Term11 ;
29+
LogicalNot. Term11 ::= "!" Term11 ;
30+
UnaryNegation. Term11 ::= "-" Term11 ;
31+
UnaryPlus. Term11 ::= "+" Term11 ;
32+
AddressOf. Term11 ::= "&" Term11 ;
33+
Indirection. Term11 ::= "*" Term11 ;
34+
35+
Item. Term64 ::= Identity ;
36+
TypedItem. Term64 ::= Identity ":" Identity ;
37+
Variable. Term64 ::= "`" Identity ;
38+
TypedVariable. Term64 ::= "`" Identity ":" Identity ;
39+
Function. Term64 ::= Term64 "(" [Term] ")" ;
40+
Bracket. Term64 ::= "(" Term ")" ;
41+
42+
ProperRule. Rule ::= [Term] "->" Term ;
43+
Fact. Rule ::= Term ;
44+
45+
coercions Term 64 ;
46+
separator Term "," ;
47+
separator Rule ";" ;

0 commit comments

Comments
 (0)