fig 0.1.77 → 0.1.79
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/Changes +58 -1
- data/bin/fig +1 -1
- data/lib/fig.rb +1 -1
- data/lib/fig/command.rb +3 -3
- data/lib/fig/command/action/dump_package_definition_parsed.rb +5 -4
- data/lib/fig/command/action/list_variables/all_configs.rb +2 -5
- data/lib/fig/command/action/publish_local.rb +1 -1
- data/lib/fig/command/action/role/list_variables_in_a_tree.rb +2 -5
- data/lib/fig/command/action/run_command_line.rb +10 -3
- data/lib/fig/command/action/run_command_statement.rb +1 -1
- data/lib/fig/command/options.rb +8 -7
- data/lib/fig/command/options/parser.rb +1 -1
- data/lib/fig/environment_variables/case_insensitive.rb +1 -1
- data/lib/fig/environment_variables/case_sensitive.rb +1 -1
- data/lib/fig/figrc.rb +10 -10
- data/lib/fig/{not_found_error.rb → file_not_found_error.rb} +1 -1
- data/lib/fig/grammar/v0.rb +174 -173
- data/lib/fig/grammar/v0.treetop +27 -21
- data/lib/fig/grammar/v1.rb +477 -171
- data/lib/fig/grammar/v1.treetop +34 -22
- data/lib/fig/operating_system.rb +139 -60
- data/lib/fig/package.rb +8 -4
- data/lib/fig/package_definition_text_assembler.rb +31 -23
- data/lib/fig/parser.rb +3 -5
- data/lib/fig/parser_package_build_state.rb +15 -14
- data/lib/fig/repository.rb +41 -28
- data/lib/fig/repository_package_publisher.rb +20 -25
- data/lib/fig/runtime_environment.rb +136 -87
- data/lib/fig/statement.rb +15 -116
- data/lib/fig/statement/archive.rb +6 -4
- data/lib/fig/statement/asset.rb +50 -35
- data/lib/fig/statement/command.rb +6 -2
- data/lib/fig/statement/configuration.rb +10 -2
- data/lib/fig/statement/environment_variable.rb +35 -0
- data/lib/fig/statement/grammar_version.rb +6 -2
- data/lib/fig/statement/include.rb +6 -2
- data/lib/fig/statement/override.rb +6 -2
- data/lib/fig/statement/path.rb +7 -8
- data/lib/fig/statement/resource.rb +7 -3
- data/lib/fig/statement/retrieve.rb +10 -2
- data/lib/fig/statement/set.rb +7 -8
- data/lib/fig/string_tokenizer.rb +195 -0
- data/lib/fig/tokenized_string.rb +22 -0
- data/lib/fig/tokenized_string/plain_segment.rb +24 -0
- data/lib/fig/tokenized_string/token.rb +18 -0
- data/lib/fig/unparser.rb +84 -1
- data/lib/fig/unparser/v0.rb +4 -0
- data/lib/fig/unparser/v1.rb +7 -7
- data/lib/fig/url.rb +12 -1
- data/lib/fig/{url_access_error.rb → url_access_disallowed_error.rb} +2 -2
- metadata +129 -128
- data/lib/fig/grammar/v0_asset_location.rb +0 -162
- data/lib/fig/grammar/v0_ish.rb +0 -1356
- data/lib/fig/grammar/v1_asset_location.rb +0 -162
- data/lib/fig/grammar/v2.rb +0 -1478
data/lib/fig/grammar/v0.treetop
CHANGED
@@ -35,26 +35,26 @@ module Fig
|
|
35
35
|
end
|
36
36
|
|
37
37
|
rule archive
|
38
|
-
statement_start:'archive' ws+
|
38
|
+
statement_start:'archive' ws+ location:asset_location {
|
39
39
|
def to_package_statement(build_state)
|
40
40
|
return build_state.new_asset_statement(
|
41
|
-
Statement::Archive, statement_start,
|
41
|
+
Statement::Archive, statement_start, location.location
|
42
42
|
)
|
43
43
|
end
|
44
44
|
}
|
45
45
|
end
|
46
46
|
|
47
47
|
rule resource
|
48
|
-
statement_start:'resource' ws+
|
48
|
+
statement_start:'resource' ws+ location:asset_location {
|
49
49
|
def to_package_statement(build_state)
|
50
50
|
return build_state.new_asset_statement(
|
51
|
-
Statement::Resource, statement_start,
|
51
|
+
Statement::Resource, statement_start, location.location
|
52
52
|
)
|
53
53
|
end
|
54
54
|
}
|
55
55
|
end
|
56
56
|
|
57
|
-
rule
|
57
|
+
rule asset_location
|
58
58
|
# Unquoted allows globbing for files, quoted does not.
|
59
59
|
#
|
60
60
|
# Unquoted, anything but:
|
@@ -62,15 +62,15 @@ module Fig
|
|
62
62
|
# ' - Future expansion
|
63
63
|
# "<>| - Characters not allowed in filenames on Windows
|
64
64
|
# \s - Necessary for the "ws" token to work
|
65
|
-
(
|
65
|
+
(location:[^@'"<>|\s]+ ws)
|
66
66
|
|
67
67
|
# Quoted, anything but:
|
68
68
|
# @ - To allow for package substitution
|
69
69
|
# ' - Future expansion
|
70
70
|
# "<>| - Characters not allowed in filenames on Windows
|
71
71
|
# *?\[\]{} - Characters significant to Dir.glob()
|
72
|
-
# \s - We just don't want these. :]
|
73
|
-
/ ('"'
|
72
|
+
# \s - We just don't want these. :]
|
73
|
+
/ ('"' location:[^@'"<>|*?\[\]{}\s]+ '"' ws)
|
74
74
|
end
|
75
75
|
|
76
76
|
rule retrieve
|
@@ -123,39 +123,45 @@ module Fig
|
|
123
123
|
}
|
124
124
|
end
|
125
125
|
|
126
|
-
rule
|
127
|
-
|
126
|
+
rule environment_variable_name
|
127
|
+
[a-zA-Z0-9_]+
|
128
|
+
end
|
129
|
+
|
130
|
+
rule set
|
131
|
+
statement_start:'set' ws+ environment_variable_name_value ws+ {
|
128
132
|
def to_config_statement(build_state)
|
129
133
|
return build_state.new_environment_variable_statement(
|
130
|
-
Statement::
|
134
|
+
Statement::Set, statement_start, environment_variable_name_value
|
131
135
|
)
|
132
136
|
end
|
133
137
|
}
|
134
138
|
end
|
135
139
|
|
136
|
-
rule
|
137
|
-
|
138
|
-
end
|
139
|
-
|
140
|
-
rule set
|
141
|
-
statement_start:'set' ws+ name_value:[\S]+ ws+ {
|
140
|
+
rule path
|
141
|
+
statement_start:('add' / 'append' / 'path') ws+ environment_variable_name_value ws+ {
|
142
142
|
def to_config_statement(build_state)
|
143
143
|
return build_state.new_environment_variable_statement(
|
144
|
-
Statement::
|
144
|
+
Statement::Path, statement_start, environment_variable_name_value
|
145
145
|
)
|
146
146
|
end
|
147
147
|
}
|
148
148
|
end
|
149
149
|
|
150
|
+
rule environment_variable_name_value
|
151
|
+
[\S]+
|
152
|
+
end
|
153
|
+
|
150
154
|
rule command
|
151
|
-
statement_start:'command' ws+
|
155
|
+
statement_start:'command' ws+ command_line ws+ {
|
152
156
|
def to_config_statement(build_state)
|
153
|
-
return build_state.new_command_statement(
|
157
|
+
return build_state.new_command_statement(
|
158
|
+
statement_start, command_line
|
159
|
+
)
|
154
160
|
end
|
155
161
|
}
|
156
162
|
end
|
157
163
|
|
158
|
-
rule
|
164
|
+
rule command_line
|
159
165
|
'"' value:[^"]* '"'
|
160
166
|
end
|
161
167
|
|
data/lib/fig/grammar/v1.rb
CHANGED
@@ -214,7 +214,7 @@ module Fig
|
|
214
214
|
elements[0]
|
215
215
|
end
|
216
216
|
|
217
|
-
def
|
217
|
+
def location
|
218
218
|
elements[2]
|
219
219
|
end
|
220
220
|
end
|
@@ -222,7 +222,7 @@ module Fig
|
|
222
222
|
module Archive1
|
223
223
|
def to_package_statement(build_state)
|
224
224
|
return build_state.new_asset_statement(
|
225
|
-
Statement::Archive, statement_start,
|
225
|
+
Statement::Archive, statement_start, location
|
226
226
|
)
|
227
227
|
end
|
228
228
|
end
|
@@ -265,7 +265,7 @@ module Fig
|
|
265
265
|
end
|
266
266
|
s0 << r2
|
267
267
|
if r2
|
268
|
-
r4 =
|
268
|
+
r4 = _nt_asset_location
|
269
269
|
s0 << r4
|
270
270
|
end
|
271
271
|
end
|
@@ -288,7 +288,7 @@ module Fig
|
|
288
288
|
elements[0]
|
289
289
|
end
|
290
290
|
|
291
|
-
def
|
291
|
+
def location
|
292
292
|
elements[2]
|
293
293
|
end
|
294
294
|
end
|
@@ -296,7 +296,7 @@ module Fig
|
|
296
296
|
module Resource1
|
297
297
|
def to_package_statement(build_state)
|
298
298
|
return build_state.new_asset_statement(
|
299
|
-
Statement::Resource, statement_start,
|
299
|
+
Statement::Resource, statement_start, location
|
300
300
|
)
|
301
301
|
end
|
302
302
|
end
|
@@ -339,7 +339,7 @@ module Fig
|
|
339
339
|
end
|
340
340
|
s0 << r2
|
341
341
|
if r2
|
342
|
-
r4 =
|
342
|
+
r4 = _nt_asset_location
|
343
343
|
s0 << r4
|
344
344
|
end
|
345
345
|
end
|
@@ -357,16 +357,22 @@ module Fig
|
|
357
357
|
r0
|
358
358
|
end
|
359
359
|
|
360
|
-
module
|
360
|
+
module AssetLocation0
|
361
361
|
end
|
362
362
|
|
363
|
-
module
|
363
|
+
module AssetLocation1
|
364
364
|
end
|
365
365
|
|
366
|
-
|
366
|
+
module AssetLocation2
|
367
|
+
end
|
368
|
+
|
369
|
+
module AssetLocation3
|
370
|
+
end
|
371
|
+
|
372
|
+
def _nt_asset_location
|
367
373
|
start_index = index
|
368
|
-
if node_cache[:
|
369
|
-
cached = node_cache[:
|
374
|
+
if node_cache[:asset_location].has_key?(index)
|
375
|
+
cached = node_cache[:asset_location][index]
|
370
376
|
if cached
|
371
377
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
372
378
|
@index = cached.interval.end
|
@@ -387,11 +393,48 @@ module Fig
|
|
387
393
|
if r2
|
388
394
|
s3, i3 = [], index
|
389
395
|
loop do
|
390
|
-
|
391
|
-
|
396
|
+
i4 = index
|
397
|
+
if has_terminal?('\G[^"\\\\]', true, index)
|
398
|
+
r5 = true
|
392
399
|
@index += 1
|
393
400
|
else
|
394
|
-
|
401
|
+
r5 = nil
|
402
|
+
end
|
403
|
+
if r5
|
404
|
+
r4 = r5
|
405
|
+
else
|
406
|
+
i6, s6 = index, []
|
407
|
+
if has_terminal?('\\', false, index)
|
408
|
+
r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
409
|
+
@index += 1
|
410
|
+
else
|
411
|
+
terminal_parse_failure('\\')
|
412
|
+
r7 = nil
|
413
|
+
end
|
414
|
+
s6 << r7
|
415
|
+
if r7
|
416
|
+
if index < input_length
|
417
|
+
r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
418
|
+
@index += 1
|
419
|
+
else
|
420
|
+
terminal_parse_failure("any character")
|
421
|
+
r8 = nil
|
422
|
+
end
|
423
|
+
s6 << r8
|
424
|
+
end
|
425
|
+
if s6.last
|
426
|
+
r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
|
427
|
+
r6.extend(AssetLocation0)
|
428
|
+
else
|
429
|
+
@index = i6
|
430
|
+
r6 = nil
|
431
|
+
end
|
432
|
+
if r6
|
433
|
+
r4 = r6
|
434
|
+
else
|
435
|
+
@index = i4
|
436
|
+
r4 = nil
|
437
|
+
end
|
395
438
|
end
|
396
439
|
if r4
|
397
440
|
s3 << r4
|
@@ -403,18 +446,18 @@ module Fig
|
|
403
446
|
s1 << r3
|
404
447
|
if r3
|
405
448
|
if has_terminal?('"', false, index)
|
406
|
-
|
449
|
+
r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
407
450
|
@index += 1
|
408
451
|
else
|
409
452
|
terminal_parse_failure('"')
|
410
|
-
|
453
|
+
r9 = nil
|
411
454
|
end
|
412
|
-
s1 <<
|
455
|
+
s1 << r9
|
413
456
|
end
|
414
457
|
end
|
415
458
|
if s1.last
|
416
459
|
r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
|
417
|
-
r1.extend(
|
460
|
+
r1.extend(AssetLocation1)
|
418
461
|
else
|
419
462
|
@index = i1
|
420
463
|
r1 = nil
|
@@ -422,75 +465,112 @@ module Fig
|
|
422
465
|
if r1
|
423
466
|
r0 = r1
|
424
467
|
else
|
425
|
-
|
468
|
+
i10, s10 = index, []
|
426
469
|
if has_terminal?("'", false, index)
|
427
|
-
|
470
|
+
r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
428
471
|
@index += 1
|
429
472
|
else
|
430
473
|
terminal_parse_failure("'")
|
431
|
-
|
474
|
+
r11 = nil
|
432
475
|
end
|
433
|
-
|
434
|
-
if
|
435
|
-
|
476
|
+
s10 << r11
|
477
|
+
if r11
|
478
|
+
s12, i12 = [], index
|
436
479
|
loop do
|
437
|
-
|
438
|
-
|
480
|
+
i13 = index
|
481
|
+
if has_terminal?('\G[^\'\\\\]', true, index)
|
482
|
+
r14 = true
|
439
483
|
@index += 1
|
440
484
|
else
|
441
|
-
|
485
|
+
r14 = nil
|
442
486
|
end
|
443
|
-
if
|
444
|
-
|
487
|
+
if r14
|
488
|
+
r13 = r14
|
489
|
+
else
|
490
|
+
i15, s15 = index, []
|
491
|
+
if has_terminal?('\\', false, index)
|
492
|
+
r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
493
|
+
@index += 1
|
494
|
+
else
|
495
|
+
terminal_parse_failure('\\')
|
496
|
+
r16 = nil
|
497
|
+
end
|
498
|
+
s15 << r16
|
499
|
+
if r16
|
500
|
+
if index < input_length
|
501
|
+
r17 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
502
|
+
@index += 1
|
503
|
+
else
|
504
|
+
terminal_parse_failure("any character")
|
505
|
+
r17 = nil
|
506
|
+
end
|
507
|
+
s15 << r17
|
508
|
+
end
|
509
|
+
if s15.last
|
510
|
+
r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
|
511
|
+
r15.extend(AssetLocation2)
|
512
|
+
else
|
513
|
+
@index = i15
|
514
|
+
r15 = nil
|
515
|
+
end
|
516
|
+
if r15
|
517
|
+
r13 = r15
|
518
|
+
else
|
519
|
+
@index = i13
|
520
|
+
r13 = nil
|
521
|
+
end
|
522
|
+
end
|
523
|
+
if r13
|
524
|
+
s12 << r13
|
445
525
|
else
|
446
526
|
break
|
447
527
|
end
|
448
528
|
end
|
449
|
-
|
450
|
-
|
451
|
-
if
|
529
|
+
r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
|
530
|
+
s10 << r12
|
531
|
+
if r12
|
452
532
|
if has_terminal?("'", false, index)
|
453
|
-
|
533
|
+
r18 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
454
534
|
@index += 1
|
455
535
|
else
|
456
536
|
terminal_parse_failure("'")
|
457
|
-
|
537
|
+
r18 = nil
|
458
538
|
end
|
459
|
-
|
539
|
+
s10 << r18
|
460
540
|
end
|
461
541
|
end
|
462
|
-
if
|
463
|
-
|
464
|
-
|
542
|
+
if s10.last
|
543
|
+
r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
|
544
|
+
r10.extend(AssetLocation3)
|
465
545
|
else
|
466
|
-
@index =
|
467
|
-
|
546
|
+
@index = i10
|
547
|
+
r10 = nil
|
468
548
|
end
|
469
|
-
if
|
470
|
-
r0 =
|
549
|
+
if r10
|
550
|
+
r0 = r10
|
471
551
|
else
|
472
|
-
|
552
|
+
s19, i19 = [], index
|
473
553
|
loop do
|
474
|
-
if has_terminal?('\G[
|
475
|
-
|
554
|
+
if has_terminal?('\G[^\\s#]', true, index)
|
555
|
+
r20 = true
|
476
556
|
@index += 1
|
477
557
|
else
|
478
|
-
|
558
|
+
r20 = nil
|
479
559
|
end
|
480
|
-
if
|
481
|
-
|
560
|
+
if r20
|
561
|
+
s19 << r20
|
482
562
|
else
|
483
563
|
break
|
484
564
|
end
|
485
565
|
end
|
486
|
-
if
|
487
|
-
@index =
|
488
|
-
|
566
|
+
if s19.empty?
|
567
|
+
@index = i19
|
568
|
+
r19 = nil
|
489
569
|
else
|
490
|
-
|
570
|
+
r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
|
491
571
|
end
|
492
|
-
if
|
493
|
-
r0 =
|
572
|
+
if r19
|
573
|
+
r0 = r19
|
494
574
|
else
|
495
575
|
@index = i0
|
496
576
|
r0 = nil
|
@@ -498,7 +578,7 @@ module Fig
|
|
498
578
|
end
|
499
579
|
end
|
500
580
|
|
501
|
-
node_cache[:
|
581
|
+
node_cache[:asset_location][start_index] = r0
|
502
582
|
|
503
583
|
r0
|
504
584
|
end
|
@@ -1039,12 +1119,123 @@ module Fig
|
|
1039
1119
|
r0
|
1040
1120
|
end
|
1041
1121
|
|
1122
|
+
def _nt_environment_variable_name
|
1123
|
+
start_index = index
|
1124
|
+
if node_cache[:environment_variable_name].has_key?(index)
|
1125
|
+
cached = node_cache[:environment_variable_name][index]
|
1126
|
+
if cached
|
1127
|
+
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1128
|
+
@index = cached.interval.end
|
1129
|
+
end
|
1130
|
+
return cached
|
1131
|
+
end
|
1132
|
+
|
1133
|
+
s0, i0 = [], index
|
1134
|
+
loop do
|
1135
|
+
if has_terminal?('\G[a-zA-Z0-9_]', true, index)
|
1136
|
+
r1 = true
|
1137
|
+
@index += 1
|
1138
|
+
else
|
1139
|
+
r1 = nil
|
1140
|
+
end
|
1141
|
+
if r1
|
1142
|
+
s0 << r1
|
1143
|
+
else
|
1144
|
+
break
|
1145
|
+
end
|
1146
|
+
end
|
1147
|
+
if s0.empty?
|
1148
|
+
@index = i0
|
1149
|
+
r0 = nil
|
1150
|
+
else
|
1151
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
1152
|
+
end
|
1153
|
+
|
1154
|
+
node_cache[:environment_variable_name][start_index] = r0
|
1155
|
+
|
1156
|
+
r0
|
1157
|
+
end
|
1158
|
+
|
1159
|
+
module Set0
|
1160
|
+
def statement_start
|
1161
|
+
elements[0]
|
1162
|
+
end
|
1163
|
+
|
1164
|
+
def environment_variable_name_value
|
1165
|
+
elements[2]
|
1166
|
+
end
|
1167
|
+
end
|
1168
|
+
|
1169
|
+
module Set1
|
1170
|
+
def to_config_statement(build_state)
|
1171
|
+
return build_state.new_environment_variable_statement(
|
1172
|
+
Statement::Set, statement_start, environment_variable_name_value
|
1173
|
+
)
|
1174
|
+
end
|
1175
|
+
end
|
1176
|
+
|
1177
|
+
def _nt_set
|
1178
|
+
start_index = index
|
1179
|
+
if node_cache[:set].has_key?(index)
|
1180
|
+
cached = node_cache[:set][index]
|
1181
|
+
if cached
|
1182
|
+
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1183
|
+
@index = cached.interval.end
|
1184
|
+
end
|
1185
|
+
return cached
|
1186
|
+
end
|
1187
|
+
|
1188
|
+
i0, s0 = index, []
|
1189
|
+
if has_terminal?('set', false, index)
|
1190
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
|
1191
|
+
@index += 3
|
1192
|
+
else
|
1193
|
+
terminal_parse_failure('set')
|
1194
|
+
r1 = nil
|
1195
|
+
end
|
1196
|
+
s0 << r1
|
1197
|
+
if r1
|
1198
|
+
s2, i2 = [], index
|
1199
|
+
loop do
|
1200
|
+
r3 = _nt_ws_or_comment
|
1201
|
+
if r3
|
1202
|
+
s2 << r3
|
1203
|
+
else
|
1204
|
+
break
|
1205
|
+
end
|
1206
|
+
end
|
1207
|
+
if s2.empty?
|
1208
|
+
@index = i2
|
1209
|
+
r2 = nil
|
1210
|
+
else
|
1211
|
+
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
1212
|
+
end
|
1213
|
+
s0 << r2
|
1214
|
+
if r2
|
1215
|
+
r4 = _nt_environment_variable_name_value
|
1216
|
+
s0 << r4
|
1217
|
+
end
|
1218
|
+
end
|
1219
|
+
if s0.last
|
1220
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
1221
|
+
r0.extend(Set0)
|
1222
|
+
r0.extend(Set1)
|
1223
|
+
else
|
1224
|
+
@index = i0
|
1225
|
+
r0 = nil
|
1226
|
+
end
|
1227
|
+
|
1228
|
+
node_cache[:set][start_index] = r0
|
1229
|
+
|
1230
|
+
r0
|
1231
|
+
end
|
1232
|
+
|
1042
1233
|
module Path0
|
1043
1234
|
def statement_start
|
1044
1235
|
elements[0]
|
1045
1236
|
end
|
1046
1237
|
|
1047
|
-
def
|
1238
|
+
def environment_variable_name_value
|
1048
1239
|
elements[2]
|
1049
1240
|
end
|
1050
1241
|
end
|
@@ -1052,7 +1243,7 @@ module Fig
|
|
1052
1243
|
module Path1
|
1053
1244
|
def to_config_statement(build_state)
|
1054
1245
|
return build_state.new_environment_variable_statement(
|
1055
|
-
Statement::Path, statement_start,
|
1246
|
+
Statement::Path, statement_start, environment_variable_name_value
|
1056
1247
|
)
|
1057
1248
|
end
|
1058
1249
|
end
|
@@ -1124,26 +1315,7 @@ module Fig
|
|
1124
1315
|
end
|
1125
1316
|
s0 << r5
|
1126
1317
|
if r5
|
1127
|
-
|
1128
|
-
loop do
|
1129
|
-
if has_terminal?('\G[\\S]', true, index)
|
1130
|
-
r8 = true
|
1131
|
-
@index += 1
|
1132
|
-
else
|
1133
|
-
r8 = nil
|
1134
|
-
end
|
1135
|
-
if r8
|
1136
|
-
s7 << r8
|
1137
|
-
else
|
1138
|
-
break
|
1139
|
-
end
|
1140
|
-
end
|
1141
|
-
if s7.empty?
|
1142
|
-
@index = i7
|
1143
|
-
r7 = nil
|
1144
|
-
else
|
1145
|
-
r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
|
1146
|
-
end
|
1318
|
+
r7 = _nt_environment_variable_name_value
|
1147
1319
|
s0 << r7
|
1148
1320
|
end
|
1149
1321
|
end
|
@@ -1161,10 +1333,22 @@ module Fig
|
|
1161
1333
|
r0
|
1162
1334
|
end
|
1163
1335
|
|
1164
|
-
|
1336
|
+
module EnvironmentVariableNameValue0
|
1337
|
+
end
|
1338
|
+
|
1339
|
+
module EnvironmentVariableNameValue1
|
1340
|
+
end
|
1341
|
+
|
1342
|
+
module EnvironmentVariableNameValue2
|
1343
|
+
end
|
1344
|
+
|
1345
|
+
module EnvironmentVariableNameValue3
|
1346
|
+
end
|
1347
|
+
|
1348
|
+
def _nt_environment_variable_name_value
|
1165
1349
|
start_index = index
|
1166
|
-
if node_cache[:
|
1167
|
-
cached = node_cache[:
|
1350
|
+
if node_cache[:environment_variable_name_value].has_key?(index)
|
1351
|
+
cached = node_cache[:environment_variable_name_value][index]
|
1168
1352
|
if cached
|
1169
1353
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1170
1354
|
@index = cached.interval.end
|
@@ -1172,121 +1356,241 @@ module Fig
|
|
1172
1356
|
return cached
|
1173
1357
|
end
|
1174
1358
|
|
1175
|
-
|
1359
|
+
i0 = index
|
1360
|
+
i1, s1 = index, []
|
1361
|
+
s2, i2 = [], index
|
1176
1362
|
loop do
|
1177
|
-
if has_terminal?('\G[
|
1178
|
-
|
1363
|
+
if has_terminal?('\G[^\\s#\\\\"]', true, index)
|
1364
|
+
r3 = true
|
1179
1365
|
@index += 1
|
1180
1366
|
else
|
1181
|
-
|
1367
|
+
r3 = nil
|
1182
1368
|
end
|
1183
|
-
if
|
1184
|
-
|
1369
|
+
if r3
|
1370
|
+
s2 << r3
|
1185
1371
|
else
|
1186
1372
|
break
|
1187
1373
|
end
|
1188
1374
|
end
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1375
|
+
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
1376
|
+
s1 << r2
|
1377
|
+
if r2
|
1378
|
+
if has_terminal?('"', false, index)
|
1379
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1380
|
+
@index += 1
|
1381
|
+
else
|
1382
|
+
terminal_parse_failure('"')
|
1383
|
+
r4 = nil
|
1384
|
+
end
|
1385
|
+
s1 << r4
|
1386
|
+
if r4
|
1387
|
+
s5, i5 = [], index
|
1388
|
+
loop do
|
1389
|
+
i6 = index
|
1390
|
+
if has_terminal?('\G[^"\\\\]', true, index)
|
1391
|
+
r7 = true
|
1392
|
+
@index += 1
|
1393
|
+
else
|
1394
|
+
r7 = nil
|
1395
|
+
end
|
1396
|
+
if r7
|
1397
|
+
r6 = r7
|
1398
|
+
else
|
1399
|
+
i8, s8 = index, []
|
1400
|
+
if has_terminal?('\\', false, index)
|
1401
|
+
r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1402
|
+
@index += 1
|
1403
|
+
else
|
1404
|
+
terminal_parse_failure('\\')
|
1405
|
+
r9 = nil
|
1406
|
+
end
|
1407
|
+
s8 << r9
|
1408
|
+
if r9
|
1409
|
+
if index < input_length
|
1410
|
+
r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1411
|
+
@index += 1
|
1412
|
+
else
|
1413
|
+
terminal_parse_failure("any character")
|
1414
|
+
r10 = nil
|
1415
|
+
end
|
1416
|
+
s8 << r10
|
1417
|
+
end
|
1418
|
+
if s8.last
|
1419
|
+
r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
|
1420
|
+
r8.extend(EnvironmentVariableNameValue0)
|
1421
|
+
else
|
1422
|
+
@index = i8
|
1423
|
+
r8 = nil
|
1424
|
+
end
|
1425
|
+
if r8
|
1426
|
+
r6 = r8
|
1427
|
+
else
|
1428
|
+
@index = i6
|
1429
|
+
r6 = nil
|
1430
|
+
end
|
1431
|
+
end
|
1432
|
+
if r6
|
1433
|
+
s5 << r6
|
1434
|
+
else
|
1435
|
+
break
|
1436
|
+
end
|
1437
|
+
end
|
1438
|
+
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
1439
|
+
s1 << r5
|
1440
|
+
if r5
|
1441
|
+
if has_terminal?('"', false, index)
|
1442
|
+
r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1443
|
+
@index += 1
|
1444
|
+
else
|
1445
|
+
terminal_parse_failure('"')
|
1446
|
+
r11 = nil
|
1447
|
+
end
|
1448
|
+
s1 << r11
|
1449
|
+
end
|
1226
1450
|
end
|
1227
|
-
return cached
|
1228
1451
|
end
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
|
1233
|
-
@index += 3
|
1452
|
+
if s1.last
|
1453
|
+
r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
|
1454
|
+
r1.extend(EnvironmentVariableNameValue1)
|
1234
1455
|
else
|
1235
|
-
|
1456
|
+
@index = i1
|
1236
1457
|
r1 = nil
|
1237
1458
|
end
|
1238
|
-
s0 << r1
|
1239
1459
|
if r1
|
1240
|
-
|
1460
|
+
r0 = r1
|
1461
|
+
else
|
1462
|
+
i12, s12 = index, []
|
1463
|
+
s13, i13 = [], index
|
1241
1464
|
loop do
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1465
|
+
if has_terminal?('\G[^\\s#\\\\\']', true, index)
|
1466
|
+
r14 = true
|
1467
|
+
@index += 1
|
1468
|
+
else
|
1469
|
+
r14 = nil
|
1470
|
+
end
|
1471
|
+
if r14
|
1472
|
+
s13 << r14
|
1245
1473
|
else
|
1246
1474
|
break
|
1247
1475
|
end
|
1248
1476
|
end
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
1477
|
+
r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
|
1478
|
+
s12 << r13
|
1479
|
+
if r13
|
1480
|
+
if has_terminal?("'", false, index)
|
1481
|
+
r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1482
|
+
@index += 1
|
1483
|
+
else
|
1484
|
+
terminal_parse_failure("'")
|
1485
|
+
r15 = nil
|
1486
|
+
end
|
1487
|
+
s12 << r15
|
1488
|
+
if r15
|
1489
|
+
s16, i16 = [], index
|
1490
|
+
loop do
|
1491
|
+
i17 = index
|
1492
|
+
if has_terminal?('\G[^\'\\\\]', true, index)
|
1493
|
+
r18 = true
|
1494
|
+
@index += 1
|
1495
|
+
else
|
1496
|
+
r18 = nil
|
1497
|
+
end
|
1498
|
+
if r18
|
1499
|
+
r17 = r18
|
1500
|
+
else
|
1501
|
+
i19, s19 = index, []
|
1502
|
+
if has_terminal?('\\', false, index)
|
1503
|
+
r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1504
|
+
@index += 1
|
1505
|
+
else
|
1506
|
+
terminal_parse_failure('\\')
|
1507
|
+
r20 = nil
|
1508
|
+
end
|
1509
|
+
s19 << r20
|
1510
|
+
if r20
|
1511
|
+
if index < input_length
|
1512
|
+
r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1513
|
+
@index += 1
|
1514
|
+
else
|
1515
|
+
terminal_parse_failure("any character")
|
1516
|
+
r21 = nil
|
1517
|
+
end
|
1518
|
+
s19 << r21
|
1519
|
+
end
|
1520
|
+
if s19.last
|
1521
|
+
r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
|
1522
|
+
r19.extend(EnvironmentVariableNameValue2)
|
1523
|
+
else
|
1524
|
+
@index = i19
|
1525
|
+
r19 = nil
|
1526
|
+
end
|
1527
|
+
if r19
|
1528
|
+
r17 = r19
|
1529
|
+
else
|
1530
|
+
@index = i17
|
1531
|
+
r17 = nil
|
1532
|
+
end
|
1533
|
+
end
|
1534
|
+
if r17
|
1535
|
+
s16 << r17
|
1536
|
+
else
|
1537
|
+
break
|
1538
|
+
end
|
1539
|
+
end
|
1540
|
+
r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
|
1541
|
+
s12 << r16
|
1542
|
+
if r16
|
1543
|
+
if has_terminal?("'", false, index)
|
1544
|
+
r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1545
|
+
@index += 1
|
1546
|
+
else
|
1547
|
+
terminal_parse_failure("'")
|
1548
|
+
r22 = nil
|
1549
|
+
end
|
1550
|
+
s12 << r22
|
1551
|
+
end
|
1552
|
+
end
|
1553
|
+
end
|
1554
|
+
if s12.last
|
1555
|
+
r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
|
1556
|
+
r12.extend(EnvironmentVariableNameValue3)
|
1252
1557
|
else
|
1253
|
-
|
1558
|
+
@index = i12
|
1559
|
+
r12 = nil
|
1254
1560
|
end
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1561
|
+
if r12
|
1562
|
+
r0 = r12
|
1563
|
+
else
|
1564
|
+
s23, i23 = [], index
|
1258
1565
|
loop do
|
1259
|
-
if has_terminal?('\G[
|
1260
|
-
|
1566
|
+
if has_terminal?('\G[^\\s#]', true, index)
|
1567
|
+
r24 = true
|
1261
1568
|
@index += 1
|
1262
1569
|
else
|
1263
|
-
|
1570
|
+
r24 = nil
|
1264
1571
|
end
|
1265
|
-
if
|
1266
|
-
|
1572
|
+
if r24
|
1573
|
+
s23 << r24
|
1267
1574
|
else
|
1268
1575
|
break
|
1269
1576
|
end
|
1270
1577
|
end
|
1271
|
-
if
|
1272
|
-
@index =
|
1273
|
-
|
1578
|
+
if s23.empty?
|
1579
|
+
@index = i23
|
1580
|
+
r23 = nil
|
1274
1581
|
else
|
1275
|
-
|
1582
|
+
r23 = instantiate_node(SyntaxNode,input, i23...index, s23)
|
1583
|
+
end
|
1584
|
+
if r23
|
1585
|
+
r0 = r23
|
1586
|
+
else
|
1587
|
+
@index = i0
|
1588
|
+
r0 = nil
|
1276
1589
|
end
|
1277
|
-
s0 << r4
|
1278
1590
|
end
|
1279
1591
|
end
|
1280
|
-
if s0.last
|
1281
|
-
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
1282
|
-
r0.extend(Set0)
|
1283
|
-
r0.extend(Set1)
|
1284
|
-
else
|
1285
|
-
@index = i0
|
1286
|
-
r0 = nil
|
1287
|
-
end
|
1288
1592
|
|
1289
|
-
node_cache[:
|
1593
|
+
node_cache[:environment_variable_name_value][start_index] = r0
|
1290
1594
|
|
1291
1595
|
r0
|
1292
1596
|
end
|
@@ -1296,14 +1600,16 @@ module Fig
|
|
1296
1600
|
elements[0]
|
1297
1601
|
end
|
1298
1602
|
|
1299
|
-
def
|
1603
|
+
def command_line
|
1300
1604
|
elements[2]
|
1301
1605
|
end
|
1302
1606
|
end
|
1303
1607
|
|
1304
1608
|
module Command1
|
1305
1609
|
def to_config_statement(build_state)
|
1306
|
-
return build_state.new_command_statement(
|
1610
|
+
return build_state.new_command_statement(
|
1611
|
+
statement_start, command_line
|
1612
|
+
)
|
1307
1613
|
end
|
1308
1614
|
end
|
1309
1615
|
|
@@ -1345,7 +1651,7 @@ module Fig
|
|
1345
1651
|
end
|
1346
1652
|
s0 << r2
|
1347
1653
|
if r2
|
1348
|
-
r4 =
|
1654
|
+
r4 = _nt_command_line
|
1349
1655
|
s0 << r4
|
1350
1656
|
end
|
1351
1657
|
end
|
@@ -1363,17 +1669,17 @@ module Fig
|
|
1363
1669
|
r0
|
1364
1670
|
end
|
1365
1671
|
|
1366
|
-
module
|
1672
|
+
module CommandLine0
|
1367
1673
|
def value
|
1368
1674
|
elements[1]
|
1369
1675
|
end
|
1370
1676
|
|
1371
1677
|
end
|
1372
1678
|
|
1373
|
-
def
|
1679
|
+
def _nt_command_line
|
1374
1680
|
start_index = index
|
1375
|
-
if node_cache[:
|
1376
|
-
cached = node_cache[:
|
1681
|
+
if node_cache[:command_line].has_key?(index)
|
1682
|
+
cached = node_cache[:command_line][index]
|
1377
1683
|
if cached
|
1378
1684
|
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1379
1685
|
@index = cached.interval.end
|
@@ -1420,13 +1726,13 @@ module Fig
|
|
1420
1726
|
end
|
1421
1727
|
if s0.last
|
1422
1728
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
1423
|
-
r0.extend(
|
1729
|
+
r0.extend(CommandLine0)
|
1424
1730
|
else
|
1425
1731
|
@index = i0
|
1426
1732
|
r0 = nil
|
1427
1733
|
end
|
1428
1734
|
|
1429
|
-
node_cache[:
|
1735
|
+
node_cache[:command_line][start_index] = r0
|
1430
1736
|
|
1431
1737
|
r0
|
1432
1738
|
end
|
@@ -1444,7 +1750,7 @@ module Fig
|
|
1444
1750
|
|
1445
1751
|
s0, i0 = [], index
|
1446
1752
|
loop do
|
1447
|
-
if has_terminal?('\G[
|
1753
|
+
if has_terminal?('\G[^\\s#]', true, index)
|
1448
1754
|
r1 = true
|
1449
1755
|
@index += 1
|
1450
1756
|
else
|