Skip to content

Commit 95e526e

Browse files
committed
Add a human friendly grammar.
1 parent 8d5baa9 commit 95e526e

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

bnf/Ds.cf

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

0 commit comments

Comments
 (0)