-
-
Notifications
You must be signed in to change notification settings - Fork 9
/
ebnf.ll1.sxp
182 lines (182 loc) · 6.79 KB
/
ebnf.ll1.sxp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
(
(rule _empty "0" (first _eps) (seq))
(rule ebnf "1"
(start #t)
(first '@pass' '@terminals' LHS _eps)
(follow _eof)
(cleanup star)
(alt _empty _ebnf_2))
(rule _ebnf_2 "1.2"
(first '@pass' '@terminals' LHS)
(follow _eof)
(cleanup merge)
(seq _ebnf_1 ebnf))
(rule _ebnf_1 "1.1"
(first '@pass' '@terminals' LHS)
(follow '@pass' '@terminals' LHS _eof)
(alt declaration rule))
(rule declaration "2"
(first '@pass' '@terminals')
(follow '@pass' '@terminals' LHS _eof)
(alt '@terminals' pass))
(rule rule "3" (first LHS) (follow '@pass' '@terminals' LHS _eof) (seq LHS expression))
(rule expression "4"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow ')' '@pass' '@terminals' LHS _eof)
(seq alt))
(rule alt "5"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow ')' '@pass' '@terminals' LHS _eof)
(seq seq _alt_1))
(rule _alt_1 "5.1"
(first _eps '|')
(follow ')' '@pass' '@terminals' LHS _eof)
(cleanup star)
(alt _empty _alt_3))
(rule _alt_3 "5.3"
(first '|')
(follow ')' '@pass' '@terminals' LHS _eof)
(cleanup merge)
(seq _alt_2 _alt_1))
(rule _alt_2 "5.2"
(first '|')
(follow ')' '@pass' '@terminals' LHS _eof '|')
(seq '|' seq))
(rule seq "6"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow ')' '@pass' '@terminals' LHS _eof '|')
(cleanup plus)
(seq diff _seq_1))
(rule _seq_1 "6.1"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL _eps)
(follow ')' '@pass' '@terminals' LHS _eof '|')
(cleanup star)
(alt _empty _seq_2))
(rule _seq_2 "6.2"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow ')' '@pass' '@terminals' LHS _eof '|')
(cleanup merge)
(seq diff _seq_1))
(rule diff "7"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
SYMBOL _eof '|' )
(seq postfix _diff_1))
(rule _diff_1 "7.1"
(first '-' _eps)
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
SYMBOL _eof '|' )
(cleanup opt)
(alt _empty _diff_2))
(rule _diff_2 "7.2"
(first '-')
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
SYMBOL _eof '|' )
(seq '-' postfix))
(rule postfix "8"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1
STRING2 SYMBOL _eof '|' )
(seq primary _postfix_1))
(rule _postfix_1 "8.1"
(first POSTFIX _eps)
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1
STRING2 SYMBOL _eof '|' )
(cleanup opt)
(alt _empty POSTFIX))
(rule primary "9"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE
STRING1 STRING2 SYMBOL _eof '|' )
(alt HEX SYMBOL O_RANGE RANGE STRING1 STRING2 _primary_1))
(rule _primary_1 "9.1"
(first '(')
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE
STRING1 STRING2 SYMBOL _eof '|' )
(seq '(' expression ')'))
(rule pass "10"
(first '@pass')
(follow '@pass' '@terminals' LHS _eof)
(seq '@pass' expression))
(terminals _terminals (seq))
(terminal LHS "11" (seq (opt (seq '[' SYMBOL ']' (plus ' '))) SYMBOL (star ' ') '::='))
(terminal SYMBOL "12" (plus (alt (range "a-z") (range "A-Z") (range "0-9") '_' '.')))
(terminal HEX "13" (seq '#x' (plus (alt (range "a-f") (range "A-F") (range "0-9")))))
(terminal RANGE "14"
(seq '['
(plus (alt (seq R_CHAR '-' R_CHAR) (seq HEX '-' HEX) R_CHAR HEX))
(opt '-')
(diff ']' LHS)) )
(terminal O_RANGE "15"
(seq '[^' (plus (alt (seq R_CHAR '-' R_CHAR) (seq HEX '-' HEX) R_CHAR HEX)) (opt '-') ']'))
(terminal STRING1 "16" (seq '"' (star (diff CHAR '"')) '"'))
(terminal STRING2 "17" (seq "'" (star (diff CHAR "'")) "'"))
(terminal CHAR "18"
(alt
(range "#x9#xA#xD")
(range "#x20-#xD7FF")
(range "#xE000-#xFFFD")
(range "#x10000-#x10FFFF")) )
(terminal R_CHAR "19" (diff CHAR (alt ']' '-' HEX)))
(terminal POSTFIX "20" (range "?*+"))
(terminal PASS "21"
(alt
(range "#x9#xA#xD#x20")
(seq (alt (diff '#' '#x') '//') (star (range "^#xA#xD")))
(seq '/*' (star (alt (opt (seq '*' (range "^/"))) (range "^*"))) '*/')
(seq '(*' (star (alt (opt (seq '*' (range "^)"))) (range "^*"))) '*)')) )
(pass _pass (seq PASS))
(rule _ebnf_3 "1.3" (first '@pass' '@terminals' LHS _eps) (follow _eof) (seq ebnf))
(rule _rule_1 "3.1"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow '@pass' '@terminals' LHS _eof)
(seq expression))
(rule _alt_4 "5.4"
(first _eps '|')
(follow ')' '@pass' '@terminals' LHS _eof)
(seq _alt_1))
(rule _alt_5 "5.5"
(first _eps '|')
(follow ')' '@pass' '@terminals' LHS _eof)
(seq _alt_1))
(rule _alt_6 "5.6"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow ')' '@pass' '@terminals' LHS _eof '|')
(seq seq))
(rule _seq_3 "6.3"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL _eps)
(follow ')' '@pass' '@terminals' LHS _eof '|')
(seq _seq_1))
(rule _seq_4 "6.4"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL _eps)
(follow ')' '@pass' '@terminals' LHS _eof '|')
(seq _seq_1))
(rule _diff_3 "7.3"
(first '-' _eps)
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
SYMBOL _eof '|' )
(seq _diff_1))
(rule _diff_4 "7.4"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow '(' ')' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1 STRING2
SYMBOL _eof '|' )
(seq postfix))
(rule _postfix_2 "8.2"
(first POSTFIX _eps)
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE RANGE STRING1
STRING2 SYMBOL _eof '|' )
(seq _postfix_1))
(rule _primary_2 "9.2"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE
STRING1 STRING2 SYMBOL _eof '|' )
(seq expression ')'))
(rule _pass_1 "10.1"
(first '(' HEX O_RANGE RANGE STRING1 STRING2 SYMBOL)
(follow '@pass' '@terminals' LHS _eof)
(seq expression))
(rule _primary_3 "9.3"
(first ')')
(follow '(' ')' '-' '@pass' '@terminals' HEX LHS O_RANGE POSTFIX RANGE
STRING1 STRING2 SYMBOL _eof '|' )
(seq ')')) )