1BEGIN;
2CREATE TABLE symbol(
3  id INTEGER PRIMARY KEY,
4  name TEXT NOT NULL,
5  isTerminal BOOLEAN NOT NULL,
6  fallback INTEGER REFERENCES symbol DEFERRABLE INITIALLY DEFERRED
7);
8INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(0,'$',TRUE,NULL);
9INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(1,'OR',TRUE,NULL);
10INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(2,'AND',TRUE,NULL);
11INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(3,'NOT',TRUE,NULL);
12INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(4,'TERM',TRUE,NULL);
13INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(5,'COLON',TRUE,NULL);
14INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(6,'MINUS',TRUE,NULL);
15INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(7,'LCP',TRUE,NULL);
16INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(8,'RCP',TRUE,NULL);
17INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(9,'STRING',TRUE,NULL);
18INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(10,'LP',TRUE,NULL);
19INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(11,'RP',TRUE,NULL);
20INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(12,'CARET',TRUE,NULL);
21INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(13,'COMMA',TRUE,NULL);
22INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(14,'PLUS',TRUE,NULL);
23INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(15,'STAR',TRUE,NULL);
24INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(16,'input',FALSE,NULL);
25INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(17,'expr',FALSE,NULL);
26INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(18,'cnearset',FALSE,NULL);
27INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(19,'exprlist',FALSE,NULL);
28INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(20,'colset',FALSE,NULL);
29INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(21,'colsetlist',FALSE,NULL);
30INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(22,'nearset',FALSE,NULL);
31INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(23,'nearphrases',FALSE,NULL);
32INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(24,'phrase',FALSE,NULL);
33INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(25,'neardist_opt',FALSE,NULL);
34INSERT INTO symbol(id,name,isTerminal,fallback)VALUES(26,'star_opt',FALSE,NULL);
35CREATE TABLE rule(
36  ruleid INTEGER PRIMARY KEY,
37  lhs INTEGER REFERENCES symbol(id),
38  txt TEXT
39);
40CREATE TABLE rulerhs(
41  ruleid INTEGER REFERENCES rule(ruleid),
42  pos INTEGER,
43  sym INTEGER REFERENCES symbol(id)
44);
45INSERT INTO rule(ruleid,lhs,txt)VALUES(0,16,'input ::= expr');
46INSERT INTO rulerhs(ruleid,pos,sym)VALUES(0,0,17);
47INSERT INTO rule(ruleid,lhs,txt)VALUES(1,20,'colset ::= MINUS LCP colsetlist RCP');
48INSERT INTO rulerhs(ruleid,pos,sym)VALUES(1,0,6);
49INSERT INTO rulerhs(ruleid,pos,sym)VALUES(1,1,7);
50INSERT INTO rulerhs(ruleid,pos,sym)VALUES(1,2,21);
51INSERT INTO rulerhs(ruleid,pos,sym)VALUES(1,3,8);
52INSERT INTO rule(ruleid,lhs,txt)VALUES(2,20,'colset ::= LCP colsetlist RCP');
53INSERT INTO rulerhs(ruleid,pos,sym)VALUES(2,0,7);
54INSERT INTO rulerhs(ruleid,pos,sym)VALUES(2,1,21);
55INSERT INTO rulerhs(ruleid,pos,sym)VALUES(2,2,8);
56INSERT INTO rule(ruleid,lhs,txt)VALUES(3,20,'colset ::= STRING');
57INSERT INTO rulerhs(ruleid,pos,sym)VALUES(3,0,9);
58INSERT INTO rule(ruleid,lhs,txt)VALUES(4,20,'colset ::= MINUS STRING');
59INSERT INTO rulerhs(ruleid,pos,sym)VALUES(4,0,6);
60INSERT INTO rulerhs(ruleid,pos,sym)VALUES(4,1,9);
61INSERT INTO rule(ruleid,lhs,txt)VALUES(5,21,'colsetlist ::= colsetlist STRING');
62INSERT INTO rulerhs(ruleid,pos,sym)VALUES(5,0,21);
63INSERT INTO rulerhs(ruleid,pos,sym)VALUES(5,1,9);
64INSERT INTO rule(ruleid,lhs,txt)VALUES(6,21,'colsetlist ::= STRING');
65INSERT INTO rulerhs(ruleid,pos,sym)VALUES(6,0,9);
66INSERT INTO rule(ruleid,lhs,txt)VALUES(7,17,'expr ::= expr AND expr');
67INSERT INTO rulerhs(ruleid,pos,sym)VALUES(7,0,17);
68INSERT INTO rulerhs(ruleid,pos,sym)VALUES(7,1,2);
69INSERT INTO rulerhs(ruleid,pos,sym)VALUES(7,2,17);
70INSERT INTO rule(ruleid,lhs,txt)VALUES(8,17,'expr ::= expr OR expr');
71INSERT INTO rulerhs(ruleid,pos,sym)VALUES(8,0,17);
72INSERT INTO rulerhs(ruleid,pos,sym)VALUES(8,1,1);
73INSERT INTO rulerhs(ruleid,pos,sym)VALUES(8,2,17);
74INSERT INTO rule(ruleid,lhs,txt)VALUES(9,17,'expr ::= expr NOT expr');
75INSERT INTO rulerhs(ruleid,pos,sym)VALUES(9,0,17);
76INSERT INTO rulerhs(ruleid,pos,sym)VALUES(9,1,3);
77INSERT INTO rulerhs(ruleid,pos,sym)VALUES(9,2,17);
78INSERT INTO rule(ruleid,lhs,txt)VALUES(10,17,'expr ::= colset COLON LP expr RP');
79INSERT INTO rulerhs(ruleid,pos,sym)VALUES(10,0,20);
80INSERT INTO rulerhs(ruleid,pos,sym)VALUES(10,1,5);
81INSERT INTO rulerhs(ruleid,pos,sym)VALUES(10,2,10);
82INSERT INTO rulerhs(ruleid,pos,sym)VALUES(10,3,17);
83INSERT INTO rulerhs(ruleid,pos,sym)VALUES(10,4,11);
84INSERT INTO rule(ruleid,lhs,txt)VALUES(11,17,'expr ::= LP expr RP');
85INSERT INTO rulerhs(ruleid,pos,sym)VALUES(11,0,10);
86INSERT INTO rulerhs(ruleid,pos,sym)VALUES(11,1,17);
87INSERT INTO rulerhs(ruleid,pos,sym)VALUES(11,2,11);
88INSERT INTO rule(ruleid,lhs,txt)VALUES(12,17,'expr ::= exprlist');
89INSERT INTO rulerhs(ruleid,pos,sym)VALUES(12,0,19);
90INSERT INTO rule(ruleid,lhs,txt)VALUES(13,19,'exprlist ::= cnearset');
91INSERT INTO rulerhs(ruleid,pos,sym)VALUES(13,0,18);
92INSERT INTO rule(ruleid,lhs,txt)VALUES(14,19,'exprlist ::= exprlist cnearset');
93INSERT INTO rulerhs(ruleid,pos,sym)VALUES(14,0,19);
94INSERT INTO rulerhs(ruleid,pos,sym)VALUES(14,1,18);
95INSERT INTO rule(ruleid,lhs,txt)VALUES(15,18,'cnearset ::= nearset');
96INSERT INTO rulerhs(ruleid,pos,sym)VALUES(15,0,22);
97INSERT INTO rule(ruleid,lhs,txt)VALUES(16,18,'cnearset ::= colset COLON nearset');
98INSERT INTO rulerhs(ruleid,pos,sym)VALUES(16,0,20);
99INSERT INTO rulerhs(ruleid,pos,sym)VALUES(16,1,5);
100INSERT INTO rulerhs(ruleid,pos,sym)VALUES(16,2,22);
101INSERT INTO rule(ruleid,lhs,txt)VALUES(17,22,'nearset ::= phrase');
102INSERT INTO rulerhs(ruleid,pos,sym)VALUES(17,0,24);
103INSERT INTO rule(ruleid,lhs,txt)VALUES(18,22,'nearset ::= CARET phrase');
104INSERT INTO rulerhs(ruleid,pos,sym)VALUES(18,0,12);
105INSERT INTO rulerhs(ruleid,pos,sym)VALUES(18,1,24);
106INSERT INTO rule(ruleid,lhs,txt)VALUES(19,22,'nearset ::= STRING LP nearphrases neardist_opt RP');
107INSERT INTO rulerhs(ruleid,pos,sym)VALUES(19,0,9);
108INSERT INTO rulerhs(ruleid,pos,sym)VALUES(19,1,10);
109INSERT INTO rulerhs(ruleid,pos,sym)VALUES(19,2,23);
110INSERT INTO rulerhs(ruleid,pos,sym)VALUES(19,3,25);
111INSERT INTO rulerhs(ruleid,pos,sym)VALUES(19,4,11);
112INSERT INTO rule(ruleid,lhs,txt)VALUES(20,23,'nearphrases ::= phrase');
113INSERT INTO rulerhs(ruleid,pos,sym)VALUES(20,0,24);
114INSERT INTO rule(ruleid,lhs,txt)VALUES(21,23,'nearphrases ::= nearphrases phrase');
115INSERT INTO rulerhs(ruleid,pos,sym)VALUES(21,0,23);
116INSERT INTO rulerhs(ruleid,pos,sym)VALUES(21,1,24);
117INSERT INTO rule(ruleid,lhs,txt)VALUES(22,25,'neardist_opt ::=');
118INSERT INTO rule(ruleid,lhs,txt)VALUES(23,25,'neardist_opt ::= COMMA STRING');
119INSERT INTO rulerhs(ruleid,pos,sym)VALUES(23,0,13);
120INSERT INTO rulerhs(ruleid,pos,sym)VALUES(23,1,9);
121INSERT INTO rule(ruleid,lhs,txt)VALUES(24,24,'phrase ::= phrase PLUS STRING star_opt');
122INSERT INTO rulerhs(ruleid,pos,sym)VALUES(24,0,24);
123INSERT INTO rulerhs(ruleid,pos,sym)VALUES(24,1,14);
124INSERT INTO rulerhs(ruleid,pos,sym)VALUES(24,2,9);
125INSERT INTO rulerhs(ruleid,pos,sym)VALUES(24,3,26);
126INSERT INTO rule(ruleid,lhs,txt)VALUES(25,24,'phrase ::= STRING star_opt');
127INSERT INTO rulerhs(ruleid,pos,sym)VALUES(25,0,9);
128INSERT INTO rulerhs(ruleid,pos,sym)VALUES(25,1,26);
129INSERT INTO rule(ruleid,lhs,txt)VALUES(26,26,'star_opt ::= STAR');
130INSERT INTO rulerhs(ruleid,pos,sym)VALUES(26,0,15);
131INSERT INTO rule(ruleid,lhs,txt)VALUES(27,26,'star_opt ::=');
132COMMIT;
133