cloudhead-less 1.2.3 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +2 -0
- data/VERSION +1 -1
- data/bin/lessc +8 -2
- data/less.gemspec +8 -92
- data/lib/ext.rb +8 -7
- data/lib/less/command.rb +12 -15
- data/lib/less/engine/grammar/less.tt +7 -3
- data/lib/less/engine.rb +3 -2
- data/lib/less.rb +2 -2
- data/spec/css/css-3.css +1 -0
- data/spec/less/css-3.less +4 -0
- data/spec/less/import.less +1 -0
- metadata +23 -94
- data/lib/vendor/treetop/.gitignore +0 -7
- data/lib/vendor/treetop/LICENSE +0 -19
- data/lib/vendor/treetop/README +0 -164
- data/lib/vendor/treetop/Rakefile +0 -19
- data/lib/vendor/treetop/benchmark/seqpar.gnuplot +0 -15
- data/lib/vendor/treetop/benchmark/seqpar.treetop +0 -16
- data/lib/vendor/treetop/benchmark/seqpar_benchmark.rb +0 -107
- data/lib/vendor/treetop/bin/tt +0 -28
- data/lib/vendor/treetop/lib/treetop/bootstrap_gen_1_metagrammar.rb +0 -45
- data/lib/vendor/treetop/lib/treetop/compiler/grammar_compiler.rb +0 -42
- data/lib/vendor/treetop/lib/treetop/compiler/lexical_address_space.rb +0 -17
- data/lib/vendor/treetop/lib/treetop/compiler/metagrammar.rb +0 -3097
- data/lib/vendor/treetop/lib/treetop/compiler/metagrammar.treetop +0 -408
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/anything_symbol.rb +0 -18
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/atomic_expression.rb +0 -14
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/character_class.rb +0 -24
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/choice.rb +0 -31
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/declaration_sequence.rb +0 -24
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/grammar.rb +0 -28
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/inline_module.rb +0 -27
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/nonterminal.rb +0 -13
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/optional.rb +0 -19
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parenthesized_expression.rb +0 -9
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_expression.rb +0 -138
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_rule.rb +0 -55
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/predicate.rb +0 -45
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/repetition.rb +0 -55
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/sequence.rb +0 -68
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/terminal.rb +0 -20
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/transient_prefix.rb +0 -9
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/treetop_file.rb +0 -9
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes.rb +0 -19
- data/lib/vendor/treetop/lib/treetop/compiler/ruby_builder.rb +0 -113
- data/lib/vendor/treetop/lib/treetop/compiler.rb +0 -6
- data/lib/vendor/treetop/lib/treetop/ruby_extensions/string.rb +0 -42
- data/lib/vendor/treetop/lib/treetop/ruby_extensions.rb +0 -2
- data/lib/vendor/treetop/lib/treetop/runtime/compiled_parser.rb +0 -105
- data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/head_node.rb +0 -15
- data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +0 -200
- data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/node.rb +0 -164
- data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list.rb +0 -4
- data/lib/vendor/treetop/lib/treetop/runtime/syntax_node.rb +0 -72
- data/lib/vendor/treetop/lib/treetop/runtime/terminal_parse_failure.rb +0 -16
- data/lib/vendor/treetop/lib/treetop/runtime/terminal_syntax_node.rb +0 -17
- data/lib/vendor/treetop/lib/treetop/runtime.rb +0 -5
- data/lib/vendor/treetop/lib/treetop/version.rb +0 -9
- data/lib/vendor/treetop/lib/treetop.rb +0 -8
- data/lib/vendor/treetop/spec/compiler/and_predicate_spec.rb +0 -36
- data/lib/vendor/treetop/spec/compiler/anything_symbol_spec.rb +0 -44
- data/lib/vendor/treetop/spec/compiler/character_class_spec.rb +0 -182
- data/lib/vendor/treetop/spec/compiler/choice_spec.rb +0 -80
- data/lib/vendor/treetop/spec/compiler/circular_compilation_spec.rb +0 -28
- data/lib/vendor/treetop/spec/compiler/failure_propagation_functional_spec.rb +0 -21
- data/lib/vendor/treetop/spec/compiler/grammar_compiler_spec.rb +0 -84
- data/lib/vendor/treetop/spec/compiler/grammar_spec.rb +0 -41
- data/lib/vendor/treetop/spec/compiler/nonterminal_symbol_spec.rb +0 -40
- data/lib/vendor/treetop/spec/compiler/not_predicate_spec.rb +0 -38
- data/lib/vendor/treetop/spec/compiler/one_or_more_spec.rb +0 -35
- data/lib/vendor/treetop/spec/compiler/optional_spec.rb +0 -37
- data/lib/vendor/treetop/spec/compiler/parenthesized_expression_spec.rb +0 -19
- data/lib/vendor/treetop/spec/compiler/parsing_rule_spec.rb +0 -32
- data/lib/vendor/treetop/spec/compiler/sequence_spec.rb +0 -115
- data/lib/vendor/treetop/spec/compiler/terminal_spec.rb +0 -81
- data/lib/vendor/treetop/spec/compiler/terminal_symbol_spec.rb +0 -37
- data/lib/vendor/treetop/spec/compiler/test_grammar.treetop +0 -7
- data/lib/vendor/treetop/spec/compiler/test_grammar.tt +0 -7
- data/lib/vendor/treetop/spec/compiler/test_grammar_do.treetop +0 -7
- data/lib/vendor/treetop/spec/compiler/zero_or_more_spec.rb +0 -56
- data/lib/vendor/treetop/spec/composition/a.treetop +0 -11
- data/lib/vendor/treetop/spec/composition/b.treetop +0 -11
- data/lib/vendor/treetop/spec/composition/c.treetop +0 -10
- data/lib/vendor/treetop/spec/composition/d.treetop +0 -10
- data/lib/vendor/treetop/spec/composition/f.treetop +0 -17
- data/lib/vendor/treetop/spec/composition/grammar_composition_spec.rb +0 -40
- data/lib/vendor/treetop/spec/composition/subfolder/e_includes_c.treetop +0 -15
- data/lib/vendor/treetop/spec/ruby_extensions/string_spec.rb +0 -32
- data/lib/vendor/treetop/spec/runtime/compiled_parser_spec.rb +0 -101
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/delete_spec.rb +0 -147
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/expire_range_spec.rb +0 -349
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/insert_and_delete_node.rb +0 -385
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/insert_spec.rb +0 -660
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +0 -6175
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +0 -58
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture.rb +0 -23
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +0 -164
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/spec_helper.rb +0 -84
- data/lib/vendor/treetop/spec/runtime/syntax_node_spec.rb +0 -53
- data/lib/vendor/treetop/spec/spec_helper.rb +0 -106
- data/lib/vendor/treetop/spec/spec_suite.rb +0 -4
- data/lib/vendor/treetop/treetop.gemspec +0 -17
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
grammar Metagrammar
|
|
4
|
-
rule treetop_file
|
|
5
|
-
requires:(space? require_statement)* prefix:space? module_or_grammar:(module_declaration / grammar) suffix:space? {
|
|
6
|
-
def compile
|
|
7
|
-
requires.text_value + prefix.text_value + module_or_grammar.compile + suffix.text_value
|
|
8
|
-
end
|
|
9
|
-
}
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
rule require_statement
|
|
13
|
-
prefix:space? "require" [ \t]+ [^\n\r]+ [\n\r]
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
rule module_declaration
|
|
17
|
-
prefix:('module' space [A-Z] alphanumeric_char* space) module_contents:(module_declaration / grammar) suffix:(space 'end') {
|
|
18
|
-
def compile
|
|
19
|
-
prefix.text_value + module_contents.compile + suffix.text_value
|
|
20
|
-
end
|
|
21
|
-
}
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
rule grammar
|
|
25
|
-
'grammar' space grammar_name space ('do' space)? declaration_sequence space? 'end' <Grammar>
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
rule grammar_name
|
|
29
|
-
([A-Z] alphanumeric_char*)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
rule declaration_sequence
|
|
33
|
-
head:declaration tail:(space declaration)* <DeclarationSequence> {
|
|
34
|
-
def declarations
|
|
35
|
-
[head] + tail
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def tail
|
|
39
|
-
super.elements.map { |elt| elt.declaration }
|
|
40
|
-
end
|
|
41
|
-
}
|
|
42
|
-
/
|
|
43
|
-
'' {
|
|
44
|
-
def compile(builder)
|
|
45
|
-
end
|
|
46
|
-
}
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
rule declaration
|
|
50
|
-
parsing_rule / include_declaration
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
rule include_declaration
|
|
54
|
-
'include' space [A-Z] (alphanumeric_char / '::')* {
|
|
55
|
-
def compile(builder)
|
|
56
|
-
builder << text_value
|
|
57
|
-
end
|
|
58
|
-
}
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
rule parsing_rule
|
|
62
|
-
'rule' space nonterminal space ('do' space)? parsing_expression space 'end' <ParsingRule>
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
rule parsing_expression
|
|
66
|
-
choice / sequence / primary
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
rule choice
|
|
70
|
-
head:alternative tail:(space? '/' space? alternative)+ <Choice> {
|
|
71
|
-
def alternatives
|
|
72
|
-
[head] + tail
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def tail
|
|
76
|
-
super.elements.map {|elt| elt.alternative}
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def inline_modules
|
|
80
|
-
(alternatives.map {|alt| alt.inline_modules }).flatten
|
|
81
|
-
end
|
|
82
|
-
}
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
rule sequence
|
|
86
|
-
head:labeled_sequence_primary tail:(space labeled_sequence_primary)+ node_class_declarations <Sequence> {
|
|
87
|
-
def sequence_elements
|
|
88
|
-
[head] + tail
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def tail
|
|
92
|
-
super.elements.map {|elt| elt.labeled_sequence_primary }
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def inline_modules
|
|
96
|
-
(sequence_elements.map {|elt| elt.inline_modules}).flatten +
|
|
97
|
-
[sequence_element_accessor_module] +
|
|
98
|
-
node_class_declarations.inline_modules
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def inline_module_name
|
|
102
|
-
node_class_declarations.inline_module_name
|
|
103
|
-
end
|
|
104
|
-
}
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
rule alternative
|
|
108
|
-
sequence / primary
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
rule primary
|
|
112
|
-
prefix atomic {
|
|
113
|
-
def compile(address, builder, parent_expression=nil)
|
|
114
|
-
prefix.compile(address, builder, self)
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def prefixed_expression
|
|
118
|
-
atomic
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def inline_modules
|
|
122
|
-
atomic.inline_modules
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def inline_module_name
|
|
126
|
-
nil
|
|
127
|
-
end
|
|
128
|
-
}
|
|
129
|
-
/
|
|
130
|
-
atomic suffix node_class_declarations {
|
|
131
|
-
def compile(address, builder, parent_expression=nil)
|
|
132
|
-
suffix.compile(address, builder, self)
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
def optional_expression
|
|
136
|
-
atomic
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
def node_class_name
|
|
140
|
-
node_class_declarations.node_class_name
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
def inline_modules
|
|
144
|
-
atomic.inline_modules + node_class_declarations.inline_modules
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
def inline_module_name
|
|
148
|
-
node_class_declarations.inline_module_name
|
|
149
|
-
end
|
|
150
|
-
}
|
|
151
|
-
/
|
|
152
|
-
atomic node_class_declarations {
|
|
153
|
-
def compile(address, builder, parent_expression=nil)
|
|
154
|
-
atomic.compile(address, builder, self)
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
def node_class_name
|
|
158
|
-
node_class_declarations.node_class_name
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
def inline_modules
|
|
162
|
-
atomic.inline_modules + node_class_declarations.inline_modules
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
def inline_module_name
|
|
166
|
-
node_class_declarations.inline_module_name
|
|
167
|
-
end
|
|
168
|
-
}
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
rule labeled_sequence_primary
|
|
172
|
-
label sequence_primary {
|
|
173
|
-
def compile(lexical_address, builder)
|
|
174
|
-
sequence_primary.compile(lexical_address, builder)
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
def inline_modules
|
|
178
|
-
sequence_primary.inline_modules
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
def label_name
|
|
182
|
-
if label.name
|
|
183
|
-
label.name
|
|
184
|
-
elsif sequence_primary.instance_of?(Nonterminal)
|
|
185
|
-
sequence_primary.text_value
|
|
186
|
-
else
|
|
187
|
-
nil
|
|
188
|
-
end
|
|
189
|
-
end
|
|
190
|
-
}
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
rule label
|
|
194
|
-
(alpha_char alphanumeric_char*) ':' {
|
|
195
|
-
def name
|
|
196
|
-
elements[0].text_value
|
|
197
|
-
end
|
|
198
|
-
}
|
|
199
|
-
/
|
|
200
|
-
'' {
|
|
201
|
-
def name
|
|
202
|
-
nil
|
|
203
|
-
end
|
|
204
|
-
}
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
rule sequence_primary
|
|
208
|
-
prefix atomic {
|
|
209
|
-
def compile(lexical_address, builder)
|
|
210
|
-
prefix.compile(lexical_address, builder, self)
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
def prefixed_expression
|
|
214
|
-
elements[1]
|
|
215
|
-
end
|
|
216
|
-
|
|
217
|
-
def inline_modules
|
|
218
|
-
atomic.inline_modules
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
def inline_module_name
|
|
222
|
-
nil
|
|
223
|
-
end
|
|
224
|
-
}
|
|
225
|
-
/
|
|
226
|
-
atomic suffix {
|
|
227
|
-
def compile(lexical_address, builder)
|
|
228
|
-
suffix.compile(lexical_address, builder, self)
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
def node_class_name
|
|
232
|
-
nil
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
def inline_modules
|
|
236
|
-
atomic.inline_modules
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
def inline_module_name
|
|
240
|
-
nil
|
|
241
|
-
end
|
|
242
|
-
}
|
|
243
|
-
/
|
|
244
|
-
atomic
|
|
245
|
-
end
|
|
246
|
-
|
|
247
|
-
rule suffix
|
|
248
|
-
repetition_suffix / optional_suffix
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
rule optional_suffix
|
|
252
|
-
'?' <Optional>
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
rule node_class_declarations
|
|
256
|
-
node_class_expression trailing_inline_module {
|
|
257
|
-
def node_class_name
|
|
258
|
-
node_class_expression.node_class_name
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
def inline_modules
|
|
262
|
-
trailing_inline_module.inline_modules
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
def inline_module
|
|
266
|
-
trailing_inline_module.inline_module
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
def inline_module_name
|
|
270
|
-
inline_module.module_name if inline_module
|
|
271
|
-
end
|
|
272
|
-
}
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
rule repetition_suffix
|
|
276
|
-
'+' <OneOrMore> / '*' <ZeroOrMore>
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
rule prefix
|
|
280
|
-
'&' <AndPredicate> / '!' <NotPredicate> / '~' <TransientPrefix>
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
rule atomic
|
|
284
|
-
terminal
|
|
285
|
-
/
|
|
286
|
-
nonterminal
|
|
287
|
-
/
|
|
288
|
-
parenthesized_expression
|
|
289
|
-
end
|
|
290
|
-
|
|
291
|
-
rule parenthesized_expression
|
|
292
|
-
'(' space? parsing_expression space? ')' <ParenthesizedExpression> {
|
|
293
|
-
def inline_modules
|
|
294
|
-
parsing_expression.inline_modules
|
|
295
|
-
end
|
|
296
|
-
}
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
rule nonterminal
|
|
300
|
-
!keyword_inside_grammar (alpha_char alphanumeric_char*) <Nonterminal>
|
|
301
|
-
end
|
|
302
|
-
|
|
303
|
-
rule terminal
|
|
304
|
-
quoted_string / character_class / anything_symbol
|
|
305
|
-
end
|
|
306
|
-
|
|
307
|
-
rule quoted_string
|
|
308
|
-
(single_quoted_string / double_quoted_string) {
|
|
309
|
-
def string
|
|
310
|
-
super.text_value
|
|
311
|
-
end
|
|
312
|
-
}
|
|
313
|
-
end
|
|
314
|
-
|
|
315
|
-
rule double_quoted_string
|
|
316
|
-
'"' string:(!'"' ("\\\\" / '\"' / .))* '"' <Terminal>
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
rule single_quoted_string
|
|
320
|
-
"'" string:(!"'" ("\\\\" / "\\'" / .))* "'" <Terminal>
|
|
321
|
-
end
|
|
322
|
-
|
|
323
|
-
rule character_class
|
|
324
|
-
'[' characters:(!']' ('\\' . /!'\\' .))+ ']' <CharacterClass> {
|
|
325
|
-
def characters
|
|
326
|
-
super.text_value
|
|
327
|
-
end
|
|
328
|
-
}
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
rule anything_symbol
|
|
332
|
-
'.' <AnythingSymbol>
|
|
333
|
-
end
|
|
334
|
-
|
|
335
|
-
rule node_class_expression
|
|
336
|
-
space '<' (!'>' .)+ '>' {
|
|
337
|
-
def node_class_name
|
|
338
|
-
elements[2].text_value
|
|
339
|
-
end
|
|
340
|
-
}
|
|
341
|
-
/
|
|
342
|
-
'' {
|
|
343
|
-
def node_class_name
|
|
344
|
-
nil
|
|
345
|
-
end
|
|
346
|
-
}
|
|
347
|
-
end
|
|
348
|
-
|
|
349
|
-
rule trailing_inline_module
|
|
350
|
-
space inline_module {
|
|
351
|
-
def inline_modules
|
|
352
|
-
[inline_module]
|
|
353
|
-
end
|
|
354
|
-
|
|
355
|
-
def inline_module_name
|
|
356
|
-
inline_module.module_name
|
|
357
|
-
end
|
|
358
|
-
}
|
|
359
|
-
/
|
|
360
|
-
'' {
|
|
361
|
-
def inline_modules
|
|
362
|
-
[]
|
|
363
|
-
end
|
|
364
|
-
|
|
365
|
-
def inline_module
|
|
366
|
-
nil
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
def inline_module_name
|
|
370
|
-
nil
|
|
371
|
-
end
|
|
372
|
-
}
|
|
373
|
-
end
|
|
374
|
-
|
|
375
|
-
rule inline_module
|
|
376
|
-
'{' (inline_module / ![{}] .)* '}' <InlineModule>
|
|
377
|
-
end
|
|
378
|
-
|
|
379
|
-
rule keyword_inside_grammar
|
|
380
|
-
('rule' / 'end') !non_space_char
|
|
381
|
-
end
|
|
382
|
-
|
|
383
|
-
rule non_space_char
|
|
384
|
-
!space .
|
|
385
|
-
end
|
|
386
|
-
|
|
387
|
-
rule alpha_char
|
|
388
|
-
[A-Za-z_]
|
|
389
|
-
end
|
|
390
|
-
|
|
391
|
-
rule alphanumeric_char
|
|
392
|
-
alpha_char / [0-9]
|
|
393
|
-
end
|
|
394
|
-
|
|
395
|
-
rule space
|
|
396
|
-
(white / comment_to_eol)+
|
|
397
|
-
end
|
|
398
|
-
|
|
399
|
-
rule comment_to_eol
|
|
400
|
-
'#' (!"\n" .)*
|
|
401
|
-
end
|
|
402
|
-
|
|
403
|
-
rule white
|
|
404
|
-
[ \t\n\r]
|
|
405
|
-
end
|
|
406
|
-
end
|
|
407
|
-
end
|
|
408
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
class AnythingSymbol < AtomicExpression
|
|
4
|
-
def compile(address, builder, parent_expression = nil)
|
|
5
|
-
super
|
|
6
|
-
builder.if__ "index < input_length" do
|
|
7
|
-
assign_result "instantiate_node(#{node_class_name},input, index...(index + 1))"
|
|
8
|
-
extend_result_with_inline_module
|
|
9
|
-
builder << "@index += 1"
|
|
10
|
-
end
|
|
11
|
-
builder.else_ do
|
|
12
|
-
builder << 'terminal_parse_failure("any character")'
|
|
13
|
-
assign_result 'nil'
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
class AtomicExpression < ParsingExpression
|
|
4
|
-
def inline_modules
|
|
5
|
-
[]
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def single_quote(string)
|
|
9
|
-
# Double any backslashes, then backslash any single-quotes:
|
|
10
|
-
"'#{string.gsub(/\\/) { '\\\\' }.gsub(/'/) { "\\'"}}'"
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
class CharacterClass < AtomicExpression
|
|
4
|
-
def compile(address, builder, parent_expression = nil)
|
|
5
|
-
super
|
|
6
|
-
|
|
7
|
-
builder.if__ "has_terminal?(#{grounded_regexp(text_value)}, true, index)" do
|
|
8
|
-
assign_result "instantiate_node(#{node_class_name},input, index...(index + 1))"
|
|
9
|
-
extend_result_with_inline_module
|
|
10
|
-
builder << "@index += 1"
|
|
11
|
-
end
|
|
12
|
-
builder.else_ do
|
|
13
|
-
"terminal_parse_failure(#{single_quote(characters)})"
|
|
14
|
-
assign_result 'nil'
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def grounded_regexp(string)
|
|
19
|
-
# Double any backslashes, then backslash any single-quotes:
|
|
20
|
-
"'\\G#{string.gsub(/\\/) { '\\\\' }.gsub(/'/) { "\\'"}}'"
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
class Choice < ParsingExpression
|
|
4
|
-
def compile(address, builder, parent_expression = nil)
|
|
5
|
-
super
|
|
6
|
-
begin_comment(self)
|
|
7
|
-
use_vars :result, :start_index
|
|
8
|
-
compile_alternatives(alternatives)
|
|
9
|
-
end_comment(self)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def compile_alternatives(alternatives)
|
|
13
|
-
obtain_new_subexpression_address
|
|
14
|
-
alternatives.first.compile(subexpression_address, builder)
|
|
15
|
-
builder.if__ subexpression_success? do
|
|
16
|
-
assign_result subexpression_result_var
|
|
17
|
-
extend_result_with_declared_module
|
|
18
|
-
extend_result_with_inline_module
|
|
19
|
-
end
|
|
20
|
-
builder.else_ do
|
|
21
|
-
if alternatives.size == 1
|
|
22
|
-
reset_index
|
|
23
|
-
assign_failure start_index_var
|
|
24
|
-
else
|
|
25
|
-
compile_alternatives(alternatives[1..-1])
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
class DeclarationSequence < Runtime::SyntaxNode
|
|
4
|
-
|
|
5
|
-
def compile(builder)
|
|
6
|
-
unless rules.empty?
|
|
7
|
-
builder.method_declaration("root") do
|
|
8
|
-
builder << "@root || :#{rules.first.name}"
|
|
9
|
-
end
|
|
10
|
-
builder.newline
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
declarations.each do |declaration|
|
|
14
|
-
declaration.compile(builder)
|
|
15
|
-
builder.newline
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def rules
|
|
20
|
-
declarations.select { |declaration| declaration.instance_of?(ParsingRule) }
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
class Grammar < Runtime::SyntaxNode
|
|
4
|
-
def compile
|
|
5
|
-
builder = RubyBuilder.new
|
|
6
|
-
|
|
7
|
-
builder.module_declaration "#{grammar_name.text_value}" do
|
|
8
|
-
builder.in(indent_level) # account for initial indentation of grammar declaration
|
|
9
|
-
builder << "include Treetop::Runtime"
|
|
10
|
-
builder.newline
|
|
11
|
-
declaration_sequence.compile(builder)
|
|
12
|
-
end
|
|
13
|
-
builder.newline
|
|
14
|
-
builder.class_declaration "#{parser_name} < Treetop::Runtime::CompiledParser" do
|
|
15
|
-
builder << "include #{grammar_name.text_value}"
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def indent_level
|
|
20
|
-
input.column_of(interval.begin) - 1
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def parser_name
|
|
24
|
-
grammar_name.text_value + 'Parser'
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
module InlineModuleMixin
|
|
4
|
-
attr_reader :module_name
|
|
5
|
-
|
|
6
|
-
def compile(index, builder, rule)
|
|
7
|
-
@module_name = "#{rule.name.treetop_camelize}#{index}"
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
class InlineModule < Runtime::SyntaxNode
|
|
12
|
-
|
|
13
|
-
include InlineModuleMixin
|
|
14
|
-
|
|
15
|
-
def compile(index, builder, rule)
|
|
16
|
-
super
|
|
17
|
-
builder.module_declaration(module_name) do
|
|
18
|
-
builder << ruby_code.gsub(/\A\n/, '').rstrip
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def ruby_code
|
|
23
|
-
elements[1].text_value
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
class Nonterminal < AtomicExpression
|
|
4
|
-
def compile(address, builder, parent_expression = nil)
|
|
5
|
-
super
|
|
6
|
-
use_vars :result
|
|
7
|
-
assign_result text_value == 'super' ? 'super' : "_nt_#{text_value}"
|
|
8
|
-
extend_result_with_declared_module
|
|
9
|
-
extend_result_with_inline_module
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
module Treetop
|
|
2
|
-
module Compiler
|
|
3
|
-
class Optional < ParsingExpression
|
|
4
|
-
def compile(address, builder, parent_expression)
|
|
5
|
-
super
|
|
6
|
-
use_vars :result
|
|
7
|
-
obtain_new_subexpression_address
|
|
8
|
-
parent_expression.atomic.compile(subexpression_address, builder)
|
|
9
|
-
|
|
10
|
-
builder.if__ subexpression_success? do
|
|
11
|
-
assign_result subexpression_result_var
|
|
12
|
-
end
|
|
13
|
-
builder.else_ do
|
|
14
|
-
assign_result epsilon_node
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|