File tree Expand file tree Collapse file tree 2 files changed +49
-0
lines changed Expand file tree Collapse file tree 2 files changed +49
-0
lines changed Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change
1
+
2
+
3
+
4
+
5
+
6
+ # Define a table definition
7
+
8
+
9
+ tablename ::= [a-zA-Z_][a-zA-Z0-9_]*
10
+
11
+ # Define column definitions
12
+ columndefinitions ::= columndefinition+
13
+
14
+ # Define a column definition
15
+ columndefinition ::= columnname " " datatype
16
+
17
+ # Define a column name
18
+ columnname ::= [a-zA-Z_][a-zA-Z0-9_]*
19
+
20
+ # Define a data type
21
+ datatype ::= "INT" | "VARCHAR" | "DATE"
22
+
23
+ # Define relationship definitions
24
+ relationshipdefinitions ::= relationshipdefinition+
25
+
26
+ # Define a relationship definition
27
+ relationshipdefinition ::= "FOREIGN KEY (" columnname ") REFERENCES " tablename " (" columnname ")"
28
+
29
+ # Define ID tokens for each table
30
+ tableidtokens ::= tableidtoken+
31
+
32
+ # Define an ID token for a table
33
+ tableidtoken ::= tablename "_id"
34
+
35
+ # Define predicates for each table ID
36
+ tableidpredicates ::= tableidpredicate+
37
+
38
+ # Define predicates for a table ID
39
+ tableidpredicate ::= tableidtoken "." columnname
40
+
41
+ # Define optional whitespace between components
42
+ ws ::= [ \t\n]+
43
+
44
+ tabledefinition ::= "CREATE TABLE " tablename " (" columndefinitions ")" "\n"
45
+
46
+ tabledefinitions ::= tabledefinition+
47
+
48
+ root ::= tabledefinitions relationshipdefinitions
You can’t perform that action at this time.
0 commit comments