mkbison 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bison_parser.rby +4 -36
- data/ext/bison_parser/bison_parser.c +65 -67
- data/ext/bison_parser/bison_parser.y +25 -27
- data/ext/bison_parser/extconf.rb +1 -3
- data/lib/bison.rb +0 -1
- data/lib/bison/action.rb +1 -1
- data/lib/bison/grammar_file.rb +1 -1
- data/lib/bison/version.rb +1 -1
- data/lib/bison_parser.rb +2 -32
- data/lib/bison_parser/actions.rb +22 -22
- data/templates/parser.y.erb +0 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71a987a62e2d5a4ff59028f97bbb5d3f58d2c8f2
|
4
|
+
data.tar.gz: b5780f28d873a785a96dc0ad3b444158409bed52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 909d99dfc14789d8ffbbf7a2396e82f085f85448cd87ca75b8efa6e3fb779a4c317e1928a9a499e5d9f191c494e3f99206afcf94bada2022f57d93840d883a87
|
7
|
+
data.tar.gz: 47033ca52ad47487545b17d405fa2615c86a9c9ebdc5cff36ef14d4e739518490ae6c0be7035ea73881c0295c425862bee7f94f397a1717f5ea7485c7d7da656
|
data/bison_parser.rby
CHANGED
@@ -62,7 +62,8 @@ grammar_rule:
|
|
62
62
|
;
|
63
63
|
|
64
64
|
components:
|
65
|
-
|
65
|
+
{ [] }
|
66
|
+
| sequence[sequence]
|
66
67
|
{ [sequence] }
|
67
68
|
|
|
68
69
|
components[sequences] PIPE sequence[sequence]
|
@@ -80,9 +81,6 @@ sequence:
|
|
80
81
|
|
|
81
82
|
sequence[sequence] IDENTIFIER[follower] LBRACK IDENTIFIER[tag] RBRACK
|
82
83
|
{ sequence << Bison::Nonterminal.new(follower, tag).tap{ |x| x.location = @follower } }
|
83
|
-
|
|
84
|
-
sequence[sequence] STRING[follower]
|
85
|
-
{ sequence << Bison::String.new(follower).tap{ |x| x.location = @follower } }
|
86
84
|
;
|
87
85
|
|
88
86
|
%%
|
@@ -91,20 +89,6 @@ class BisonParser
|
|
91
89
|
attr_accessor :section
|
92
90
|
|
93
91
|
def lex
|
94
|
-
x = real_lex
|
95
|
-
Tokens.constants.each do |const|
|
96
|
-
if Tokens.const_get(const) == x
|
97
|
-
warn "Lex'd #{const}\t: #{lex_value.inspect}" if ENV['DEBUG_GRAMMAR']
|
98
|
-
return x
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
warn "Lex'd #{x.inspect}" if ENV['DEBUG_GRAMMAR']
|
103
|
-
|
104
|
-
x
|
105
|
-
end
|
106
|
-
|
107
|
-
def real_lex
|
108
92
|
self.section ||= 0
|
109
93
|
self.lex_value = nil
|
110
94
|
|
@@ -126,7 +110,7 @@ class BisonParser
|
|
126
110
|
break
|
127
111
|
end
|
128
112
|
end
|
129
|
-
|
113
|
+
|
130
114
|
return nil unless c
|
131
115
|
|
132
116
|
case c
|
@@ -164,20 +148,6 @@ class BisonParser
|
|
164
148
|
end
|
165
149
|
self.lex_value = number.to_i
|
166
150
|
return Tokens::NUMBER
|
167
|
-
when '"'
|
168
|
-
string = ''
|
169
|
-
while (c = self.read) && c != '"'
|
170
|
-
string << c
|
171
|
-
end
|
172
|
-
self.lex_value = string
|
173
|
-
return Tokens::STRING
|
174
|
-
when "'"
|
175
|
-
string = ''
|
176
|
-
while (c = self.read) && c != "'"
|
177
|
-
string << c
|
178
|
-
end
|
179
|
-
self.lex_value = string
|
180
|
-
return Tokens::STRING
|
181
151
|
end
|
182
152
|
|
183
153
|
if c =~ /\w/
|
@@ -199,8 +169,6 @@ class BisonParser
|
|
199
169
|
end
|
200
170
|
end
|
201
171
|
|
202
|
-
|
203
|
-
|
204
|
-
return c.ord
|
172
|
+
return nil
|
205
173
|
end
|
206
174
|
end
|
@@ -396,7 +396,7 @@ union yyalloc
|
|
396
396
|
/* YYFINAL -- State number of the termination state. */
|
397
397
|
#define YYFINAL 3
|
398
398
|
/* YYLAST -- Last index in YYTABLE. */
|
399
|
-
#define YYLAST
|
399
|
+
#define YYLAST 25
|
400
400
|
|
401
401
|
/* YYNTOKENS -- Number of terminals. */
|
402
402
|
#define YYNTOKENS 17
|
@@ -405,7 +405,7 @@ union yyalloc
|
|
405
405
|
/* YYNRULES -- Number of rules. */
|
406
406
|
#define YYNRULES 20
|
407
407
|
/* YYNSTATES -- Number of states. */
|
408
|
-
#define YYNSTATES
|
408
|
+
#define YYNSTATES 31
|
409
409
|
|
410
410
|
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
|
411
411
|
by yylex, with out-of-bounds checking. */
|
@@ -454,8 +454,8 @@ static const yytype_uint8 yytranslate[] =
|
|
454
454
|
static const yytype_uint8 yyrline[] =
|
455
455
|
{
|
456
456
|
0, 37, 37, 50, 56, 67, 73, 84, 92, 100,
|
457
|
-
108, 120, 126, 137,
|
458
|
-
|
457
|
+
108, 120, 126, 137, 149, 155, 163, 175, 181, 190,
|
458
|
+
199
|
459
459
|
};
|
460
460
|
#endif
|
461
461
|
|
@@ -487,7 +487,7 @@ static const yytype_uint16 yytoknum[] =
|
|
487
487
|
#define yypact_value_is_default(Yystate) \
|
488
488
|
(!!((Yystate) == (-8)))
|
489
489
|
|
490
|
-
#define YYTABLE_NINF -
|
490
|
+
#define YYTABLE_NINF -18
|
491
491
|
|
492
492
|
#define yytable_value_is_error(Yytable_value) \
|
493
493
|
0
|
@@ -496,10 +496,10 @@ static const yytype_uint16 yytoknum[] =
|
|
496
496
|
STATE-NUM. */
|
497
497
|
static const yytype_int8 yypact[] =
|
498
498
|
{
|
499
|
-
-8,
|
500
|
-
-
|
501
|
-
-8, -4, -
|
502
|
-
|
499
|
+
-8, 10, -7, -8, -6, -8, 8, 12, 13, 14,
|
500
|
+
-1, -8, -8, -8, -8, 15, 2, -8, -8, -3,
|
501
|
+
-8, -4, -2, -8, -8, 11, -8, -2, 17, 16,
|
502
|
+
-8
|
503
503
|
};
|
504
504
|
|
505
505
|
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
|
@@ -508,15 +508,15 @@ static const yytype_int8 yypact[] =
|
|
508
508
|
static const yytype_uint8 yydefact[] =
|
509
509
|
{
|
510
510
|
5, 0, 0, 1, 0, 11, 6, 0, 0, 0,
|
511
|
-
3, 10, 7, 8, 9, 0, 0, 2, 12,
|
512
|
-
4, 0,
|
513
|
-
|
511
|
+
3, 10, 7, 8, 9, 0, 0, 2, 12, 14,
|
512
|
+
4, 0, 15, 13, 17, 19, 18, 16, 0, 0,
|
513
|
+
20
|
514
514
|
};
|
515
515
|
|
516
516
|
/* YYPGOTO[NTERM-NUM]. */
|
517
517
|
static const yytype_int8 yypgoto[] =
|
518
518
|
{
|
519
|
-
-8, -8, -8, -8, -8, -8, -8, -8,
|
519
|
+
-8, -8, -8, -8, -8, -8, -8, -8, 0
|
520
520
|
};
|
521
521
|
|
522
522
|
/* YYDEFGOTO[NTERM-NUM]. */
|
@@ -528,18 +528,18 @@ static const yytype_int8 yydefgoto[] =
|
|
528
528
|
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
|
529
529
|
positive, shift that token. If negative, reduce the rule whose
|
530
530
|
number is the opposite. If YYTABLE_NINF, syntax error. */
|
531
|
-
static const
|
531
|
+
static const yytype_int8 yytable[] =
|
532
532
|
{
|
533
|
-
|
534
|
-
|
535
|
-
|
533
|
+
-17, 25, 15, 23, 4, 5, 24, 7, 8, 9,
|
534
|
+
3, 16, 11, -17, 26, 12, 13, 14, 20, 28,
|
535
|
+
29, 19, 0, 0, 27, 30
|
536
536
|
};
|
537
537
|
|
538
538
|
static const yytype_int8 yycheck[] =
|
539
539
|
{
|
540
|
-
3, 3,
|
541
|
-
|
542
|
-
|
540
|
+
3, 3, 3, 7, 11, 12, 10, 13, 14, 15,
|
541
|
+
0, 12, 4, 16, 16, 3, 3, 3, 16, 8,
|
542
|
+
3, 6, -1, -1, 24, 9
|
543
543
|
};
|
544
544
|
|
545
545
|
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
@@ -548,15 +548,15 @@ static const yytype_uint8 yystos[] =
|
|
548
548
|
{
|
549
549
|
0, 18, 20, 0, 11, 12, 21, 13, 14, 15,
|
550
550
|
22, 4, 3, 3, 3, 3, 12, 19, 23, 6,
|
551
|
-
16, 24, 25, 7, 10, 3,
|
552
|
-
|
551
|
+
16, 24, 25, 7, 10, 3, 16, 25, 8, 3,
|
552
|
+
9
|
553
553
|
};
|
554
554
|
|
555
555
|
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
|
556
556
|
static const yytype_uint8 yyr1[] =
|
557
557
|
{
|
558
558
|
0, 17, 18, 19, 19, 20, 20, 21, 21, 21,
|
559
|
-
21, 22, 22, 23, 24, 24,
|
559
|
+
21, 22, 22, 23, 24, 24, 24, 25, 25, 25,
|
560
560
|
25
|
561
561
|
};
|
562
562
|
|
@@ -564,8 +564,8 @@ static const yytype_uint8 yyr1[] =
|
|
564
564
|
static const yytype_uint8 yyr2[] =
|
565
565
|
{
|
566
566
|
0, 2, 4, 0, 2, 0, 2, 3, 3, 3,
|
567
|
-
2, 0, 2, 4, 1, 3, 0, 2, 2,
|
568
|
-
|
567
|
+
2, 0, 2, 4, 0, 1, 3, 0, 2, 2,
|
568
|
+
5
|
569
569
|
};
|
570
570
|
|
571
571
|
|
@@ -1349,7 +1349,7 @@ yyreduce:
|
|
1349
1349
|
rb_ivar_set(__actions, rb_intern("@tokens"), rb_ary_new3(2, INT2FIX((yylsp[-3]).first_line), INT2FIX((yylsp[-3]).first_column)));
|
1350
1350
|
rb_ivar_set(__actions, rb_intern("@rules"), rb_ary_new3(2, INT2FIX((yylsp[-1]).first_line), INT2FIX((yylsp[-1]).first_column)));
|
1351
1351
|
rb_ivar_set(__actions, rb_intern("@code"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1352
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1352
|
+
(yyval) = rb_funcall(__actions, rb_intern("_0_grammar_file_a94c71c90dcf6de40d17336b9d39db58"), 3, (yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
|
1353
1353
|
}
|
1354
1354
|
#line 1355 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1355
1355
|
break;
|
@@ -1358,7 +1358,7 @@ yyreduce:
|
|
1358
1358
|
#line 50 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1359
1359
|
{
|
1360
1360
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1361
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1361
|
+
(yyval) = rb_funcall(__actions, rb_intern("_0_optional_code_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
1362
1362
|
}
|
1363
1363
|
#line 1364 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1364
1364
|
break;
|
@@ -1368,7 +1368,7 @@ yyreduce:
|
|
1368
1368
|
{
|
1369
1369
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1370
1370
|
rb_ivar_set(__actions, rb_intern("@actions"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1371
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1371
|
+
(yyval) = rb_funcall(__actions, rb_intern("_1_optional_code_1359d45d91e668b6af09d4ac3c336a88"), 1, (yyvsp[0]));
|
1372
1372
|
}
|
1373
1373
|
#line 1374 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1374
1374
|
break;
|
@@ -1377,7 +1377,7 @@ yyreduce:
|
|
1377
1377
|
#line 67 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1378
1378
|
{
|
1379
1379
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1380
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1380
|
+
(yyval) = rb_funcall(__actions, rb_intern("_0_token_list_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
1381
1381
|
}
|
1382
1382
|
#line 1383 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1383
1383
|
break;
|
@@ -1388,7 +1388,7 @@ yyreduce:
|
|
1388
1388
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1389
1389
|
rb_ivar_set(__actions, rb_intern("@list"), rb_ary_new3(2, INT2FIX((yylsp[-1]).first_line), INT2FIX((yylsp[-1]).first_column)));
|
1390
1390
|
rb_ivar_set(__actions, rb_intern("@token"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1391
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1391
|
+
(yyval) = rb_funcall(__actions, rb_intern("_1_token_list_21a28d2acdd128c24843b772a9881f2d"), 2, (yyvsp[-1]), (yyvsp[0]));
|
1392
1392
|
}
|
1393
1393
|
#line 1394 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1394
1394
|
break;
|
@@ -1398,7 +1398,7 @@ yyreduce:
|
|
1398
1398
|
{
|
1399
1399
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1400
1400
|
rb_ivar_set(__actions, rb_intern("@name"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1401
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1401
|
+
(yyval) = rb_funcall(__actions, rb_intern("_0_token_f014c38ad08ecac5d62c0e3fa23163b3"), 1, (yyvsp[0]));
|
1402
1402
|
}
|
1403
1403
|
#line 1404 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1404
1404
|
break;
|
@@ -1408,7 +1408,7 @@ yyreduce:
|
|
1408
1408
|
{
|
1409
1409
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1410
1410
|
rb_ivar_set(__actions, rb_intern("@name"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1411
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1411
|
+
(yyval) = rb_funcall(__actions, rb_intern("_1_token_f014c38ad08ecac5d62c0e3fa23163b3"), 1, (yyvsp[0]));
|
1412
1412
|
}
|
1413
1413
|
#line 1414 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1414
1414
|
break;
|
@@ -1418,7 +1418,7 @@ yyreduce:
|
|
1418
1418
|
{
|
1419
1419
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1420
1420
|
rb_ivar_set(__actions, rb_intern("@name"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1421
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1421
|
+
(yyval) = rb_funcall(__actions, rb_intern("_2_token_f014c38ad08ecac5d62c0e3fa23163b3"), 1, (yyvsp[0]));
|
1422
1422
|
}
|
1423
1423
|
#line 1424 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1424
1424
|
break;
|
@@ -1429,7 +1429,7 @@ yyreduce:
|
|
1429
1429
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1430
1430
|
rb_ivar_set(__actions, rb_intern("@token"), rb_ary_new3(2, INT2FIX((yylsp[-1]).first_line), INT2FIX((yylsp[-1]).first_column)));
|
1431
1431
|
rb_ivar_set(__actions, rb_intern("@num"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1432
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1432
|
+
(yyval) = rb_funcall(__actions, rb_intern("_3_token_445055bddb5840e621fa399faa56aefc"), 2, (yyvsp[-1]), (yyvsp[0]));
|
1433
1433
|
}
|
1434
1434
|
#line 1435 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1435
1435
|
break;
|
@@ -1438,7 +1438,7 @@ yyreduce:
|
|
1438
1438
|
#line 120 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1439
1439
|
{
|
1440
1440
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1441
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1441
|
+
(yyval) = rb_funcall(__actions, rb_intern("_0_grammar_rules_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
1442
1442
|
}
|
1443
1443
|
#line 1444 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1444
1444
|
break;
|
@@ -1449,7 +1449,7 @@ yyreduce:
|
|
1449
1449
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1450
1450
|
rb_ivar_set(__actions, rb_intern("@list"), rb_ary_new3(2, INT2FIX((yylsp[-1]).first_line), INT2FIX((yylsp[-1]).first_column)));
|
1451
1451
|
rb_ivar_set(__actions, rb_intern("@rule"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1452
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1452
|
+
(yyval) = rb_funcall(__actions, rb_intern("_1_grammar_rules_d4b402a4ddf06c5292ab917a96fe105c"), 2, (yyvsp[-1]), (yyvsp[0]));
|
1453
1453
|
}
|
1454
1454
|
#line 1455 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1455
1455
|
break;
|
@@ -1460,7 +1460,7 @@ yyreduce:
|
|
1460
1460
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1461
1461
|
rb_ivar_set(__actions, rb_intern("@name"), rb_ary_new3(2, INT2FIX((yylsp[-3]).first_line), INT2FIX((yylsp[-3]).first_column)));
|
1462
1462
|
rb_ivar_set(__actions, rb_intern("@components"), rb_ary_new3(2, INT2FIX((yylsp[-1]).first_line), INT2FIX((yylsp[-1]).first_column)));
|
1463
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1463
|
+
(yyval) = rb_funcall(__actions, rb_intern("_0_grammar_rule_bce7f6337f3284ba4a3537cc1d642c28"), 2, (yyvsp[-3]), (yyvsp[-1]));
|
1464
1464
|
}
|
1465
1465
|
#line 1466 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1466
1466
|
break;
|
@@ -1469,28 +1469,28 @@ yyreduce:
|
|
1469
1469
|
#line 149 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1470
1470
|
{
|
1471
1471
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1472
|
-
|
1473
|
-
(yyval) = rb_funcall(__actions, rb_intern("_0_components"), 1, (yyvsp[0]));
|
1472
|
+
(yyval) = rb_funcall(__actions, rb_intern("_0_components_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
1474
1473
|
}
|
1475
|
-
#line
|
1474
|
+
#line 1475 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1476
1475
|
break;
|
1477
1476
|
|
1478
1477
|
case 15:
|
1479
|
-
#line
|
1478
|
+
#line 156 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1480
1479
|
{
|
1481
1480
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1482
|
-
rb_ivar_set(__actions, rb_intern("@sequences"), rb_ary_new3(2, INT2FIX((yylsp[-2]).first_line), INT2FIX((yylsp[-2]).first_column)));
|
1483
1481
|
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1484
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1482
|
+
(yyval) = rb_funcall(__actions, rb_intern("_1_components_2403a823f1a9854a29da7cf64f191fbe"), 1, (yyvsp[0]));
|
1485
1483
|
}
|
1486
|
-
#line
|
1484
|
+
#line 1485 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1487
1485
|
break;
|
1488
1486
|
|
1489
1487
|
case 16:
|
1490
|
-
#line
|
1488
|
+
#line 164 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1491
1489
|
{
|
1492
1490
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1493
|
-
(
|
1491
|
+
rb_ivar_set(__actions, rb_intern("@sequences"), rb_ary_new3(2, INT2FIX((yylsp[-2]).first_line), INT2FIX((yylsp[-2]).first_column)));
|
1492
|
+
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1493
|
+
(yyval) = rb_funcall(__actions, rb_intern("_2_components_62da044340939f02b6c0b52917617e17"), 2, (yyvsp[-2]), (yyvsp[0]));
|
1494
1494
|
}
|
1495
1495
|
#line 1496 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1496
1496
|
break;
|
@@ -1499,49 +1499,47 @@ yyreduce:
|
|
1499
1499
|
#line 175 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1500
1500
|
{
|
1501
1501
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1502
|
-
|
1503
|
-
rb_ivar_set(__actions, rb_intern("@code"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1504
|
-
(yyval) = rb_funcall(__actions, rb_intern("_1_sequence"), 2, (yyvsp[-1]), (yyvsp[0]));
|
1502
|
+
(yyval) = rb_funcall(__actions, rb_intern("_0_sequence_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
1505
1503
|
}
|
1506
|
-
#line
|
1504
|
+
#line 1505 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1507
1505
|
break;
|
1508
1506
|
|
1509
1507
|
case 18:
|
1510
|
-
#line
|
1508
|
+
#line 182 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1511
1509
|
{
|
1512
1510
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1513
1511
|
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX((yylsp[-1]).first_line), INT2FIX((yylsp[-1]).first_column)));
|
1514
|
-
rb_ivar_set(__actions, rb_intern("@
|
1515
|
-
(yyval) = rb_funcall(__actions, rb_intern("
|
1512
|
+
rb_ivar_set(__actions, rb_intern("@code"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1513
|
+
(yyval) = rb_funcall(__actions, rb_intern("_1_sequence_512ceffccf6bb7565046f90d6d7762ad"), 2, (yyvsp[-1]), (yyvsp[0]));
|
1516
1514
|
}
|
1517
|
-
#line
|
1515
|
+
#line 1516 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1518
1516
|
break;
|
1519
1517
|
|
1520
1518
|
case 19:
|
1521
|
-
#line
|
1519
|
+
#line 191 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1522
1520
|
{
|
1523
1521
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1524
|
-
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX((yylsp[-
|
1525
|
-
rb_ivar_set(__actions, rb_intern("@follower"), rb_ary_new3(2, INT2FIX((yylsp[
|
1526
|
-
|
1527
|
-
(yyval) = rb_funcall(__actions, rb_intern("_3_sequence"), 3, (yyvsp[-4]), (yyvsp[-3]), (yyvsp[-1]));
|
1522
|
+
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX((yylsp[-1]).first_line), INT2FIX((yylsp[-1]).first_column)));
|
1523
|
+
rb_ivar_set(__actions, rb_intern("@follower"), rb_ary_new3(2, INT2FIX((yylsp[0]).first_line), INT2FIX((yylsp[0]).first_column)));
|
1524
|
+
(yyval) = rb_funcall(__actions, rb_intern("_2_sequence_4b2903c3aeb37d22d413a53653d0df28"), 2, (yyvsp[-1]), (yyvsp[0]));
|
1528
1525
|
}
|
1529
|
-
#line
|
1526
|
+
#line 1527 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1530
1527
|
break;
|
1531
1528
|
|
1532
1529
|
case 20:
|
1533
|
-
#line
|
1530
|
+
#line 200 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1661 */
|
1534
1531
|
{
|
1535
1532
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX((yyloc).first_line), INT2FIX((yyloc).first_column)));
|
1536
|
-
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX((yylsp[-
|
1537
|
-
rb_ivar_set(__actions, rb_intern("@follower"), rb_ary_new3(2, INT2FIX((yylsp[
|
1538
|
-
(
|
1533
|
+
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX((yylsp[-4]).first_line), INT2FIX((yylsp[-4]).first_column)));
|
1534
|
+
rb_ivar_set(__actions, rb_intern("@follower"), rb_ary_new3(2, INT2FIX((yylsp[-3]).first_line), INT2FIX((yylsp[-3]).first_column)));
|
1535
|
+
rb_ivar_set(__actions, rb_intern("@tag"), rb_ary_new3(2, INT2FIX((yylsp[-1]).first_line), INT2FIX((yylsp[-1]).first_column)));
|
1536
|
+
(yyval) = rb_funcall(__actions, rb_intern("_3_sequence_68f2380aa0f3a7de0fb9b3482705a54c"), 3, (yyvsp[-4]), (yyvsp[-3]), (yyvsp[-1]));
|
1539
1537
|
}
|
1540
|
-
#line
|
1538
|
+
#line 1539 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1541
1539
|
break;
|
1542
1540
|
|
1543
1541
|
|
1544
|
-
#line
|
1542
|
+
#line 1543 "../../../../ext/bison_parser/bison_parser.c" /* yacc.c:1661 */
|
1545
1543
|
default: break;
|
1546
1544
|
}
|
1547
1545
|
/* User semantic actions sometimes alter yychar, and that requires
|
@@ -1776,7 +1774,7 @@ yyreturn:
|
|
1776
1774
|
#endif
|
1777
1775
|
return yyresult;
|
1778
1776
|
}
|
1779
|
-
#line
|
1777
|
+
#line 211 "../../../../ext/bison_parser/bison_parser.y" /* yacc.c:1906 */
|
1780
1778
|
|
1781
1779
|
|
1782
1780
|
static VALUE cBisonParser;
|
@@ -40,7 +40,7 @@ grammar_file:
|
|
40
40
|
rb_ivar_set(__actions, rb_intern("@tokens"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
41
41
|
rb_ivar_set(__actions, rb_intern("@rules"), rb_ary_new3(2, INT2FIX(@3.first_line), INT2FIX(@3.first_column)));
|
42
42
|
rb_ivar_set(__actions, rb_intern("@code"), rb_ary_new3(2, INT2FIX(@4.first_line), INT2FIX(@4.first_column)));
|
43
|
-
$$ = rb_funcall(__actions, rb_intern("
|
43
|
+
$$ = rb_funcall(__actions, rb_intern("_0_grammar_file_a94c71c90dcf6de40d17336b9d39db58"), 3, $1, $3, $4);
|
44
44
|
}
|
45
45
|
|
46
46
|
;
|
@@ -49,7 +49,7 @@ optional_code:
|
|
49
49
|
|
50
50
|
{
|
51
51
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
52
|
-
$$ = rb_funcall(__actions, rb_intern("
|
52
|
+
$$ = rb_funcall(__actions, rb_intern("_0_optional_code_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
53
53
|
}
|
54
54
|
|
55
55
|
|
|
@@ -57,7 +57,7 @@ optional_code:
|
|
57
57
|
{
|
58
58
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
59
59
|
rb_ivar_set(__actions, rb_intern("@actions"), rb_ary_new3(2, INT2FIX(@2.first_line), INT2FIX(@2.first_column)));
|
60
|
-
$$ = rb_funcall(__actions, rb_intern("
|
60
|
+
$$ = rb_funcall(__actions, rb_intern("_1_optional_code_1359d45d91e668b6af09d4ac3c336a88"), 1, $2);
|
61
61
|
}
|
62
62
|
|
63
63
|
;
|
@@ -66,7 +66,7 @@ token_list:
|
|
66
66
|
|
67
67
|
{
|
68
68
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
69
|
-
$$ = rb_funcall(__actions, rb_intern("
|
69
|
+
$$ = rb_funcall(__actions, rb_intern("_0_token_list_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
70
70
|
}
|
71
71
|
|
72
72
|
|
|
@@ -75,7 +75,7 @@ token_list:
|
|
75
75
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
76
76
|
rb_ivar_set(__actions, rb_intern("@list"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
77
77
|
rb_ivar_set(__actions, rb_intern("@token"), rb_ary_new3(2, INT2FIX(@2.first_line), INT2FIX(@2.first_column)));
|
78
|
-
$$ = rb_funcall(__actions, rb_intern("
|
78
|
+
$$ = rb_funcall(__actions, rb_intern("_1_token_list_21a28d2acdd128c24843b772a9881f2d"), 2, $1, $2);
|
79
79
|
}
|
80
80
|
|
81
81
|
;
|
@@ -85,7 +85,7 @@ token:
|
|
85
85
|
{
|
86
86
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
87
87
|
rb_ivar_set(__actions, rb_intern("@name"), rb_ary_new3(2, INT2FIX(@3.first_line), INT2FIX(@3.first_column)));
|
88
|
-
$$ = rb_funcall(__actions, rb_intern("
|
88
|
+
$$ = rb_funcall(__actions, rb_intern("_0_token_f014c38ad08ecac5d62c0e3fa23163b3"), 1, $3);
|
89
89
|
}
|
90
90
|
|
91
91
|
|
|
@@ -93,7 +93,7 @@ token:
|
|
93
93
|
{
|
94
94
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
95
95
|
rb_ivar_set(__actions, rb_intern("@name"), rb_ary_new3(2, INT2FIX(@3.first_line), INT2FIX(@3.first_column)));
|
96
|
-
$$ = rb_funcall(__actions, rb_intern("
|
96
|
+
$$ = rb_funcall(__actions, rb_intern("_1_token_f014c38ad08ecac5d62c0e3fa23163b3"), 1, $3);
|
97
97
|
}
|
98
98
|
|
99
99
|
|
|
@@ -101,7 +101,7 @@ token:
|
|
101
101
|
{
|
102
102
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
103
103
|
rb_ivar_set(__actions, rb_intern("@name"), rb_ary_new3(2, INT2FIX(@3.first_line), INT2FIX(@3.first_column)));
|
104
|
-
$$ = rb_funcall(__actions, rb_intern("
|
104
|
+
$$ = rb_funcall(__actions, rb_intern("_2_token_f014c38ad08ecac5d62c0e3fa23163b3"), 1, $3);
|
105
105
|
}
|
106
106
|
|
107
107
|
|
|
@@ -110,7 +110,7 @@ token:
|
|
110
110
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
111
111
|
rb_ivar_set(__actions, rb_intern("@token"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
112
112
|
rb_ivar_set(__actions, rb_intern("@num"), rb_ary_new3(2, INT2FIX(@2.first_line), INT2FIX(@2.first_column)));
|
113
|
-
$$ = rb_funcall(__actions, rb_intern("
|
113
|
+
$$ = rb_funcall(__actions, rb_intern("_3_token_445055bddb5840e621fa399faa56aefc"), 2, $1, $2);
|
114
114
|
}
|
115
115
|
|
116
116
|
;
|
@@ -119,7 +119,7 @@ grammar_rules:
|
|
119
119
|
|
120
120
|
{
|
121
121
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
122
|
-
$$ = rb_funcall(__actions, rb_intern("
|
122
|
+
$$ = rb_funcall(__actions, rb_intern("_0_grammar_rules_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
123
123
|
}
|
124
124
|
|
125
125
|
|
|
@@ -128,7 +128,7 @@ grammar_rules:
|
|
128
128
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
129
129
|
rb_ivar_set(__actions, rb_intern("@list"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
130
130
|
rb_ivar_set(__actions, rb_intern("@rule"), rb_ary_new3(2, INT2FIX(@2.first_line), INT2FIX(@2.first_column)));
|
131
|
-
$$ = rb_funcall(__actions, rb_intern("
|
131
|
+
$$ = rb_funcall(__actions, rb_intern("_1_grammar_rules_d4b402a4ddf06c5292ab917a96fe105c"), 2, $1, $2);
|
132
132
|
}
|
133
133
|
|
134
134
|
;
|
@@ -139,17 +139,24 @@ grammar_rule:
|
|
139
139
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
140
140
|
rb_ivar_set(__actions, rb_intern("@name"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
141
141
|
rb_ivar_set(__actions, rb_intern("@components"), rb_ary_new3(2, INT2FIX(@3.first_line), INT2FIX(@3.first_column)));
|
142
|
-
$$ = rb_funcall(__actions, rb_intern("
|
142
|
+
$$ = rb_funcall(__actions, rb_intern("_0_grammar_rule_bce7f6337f3284ba4a3537cc1d642c28"), 2, $1, $3);
|
143
143
|
}
|
144
144
|
|
145
145
|
;
|
146
146
|
|
147
147
|
components:
|
148
|
+
|
149
|
+
{
|
150
|
+
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
151
|
+
$$ = rb_funcall(__actions, rb_intern("_0_components_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
152
|
+
}
|
153
|
+
|
154
|
+
|
|
148
155
|
sequence
|
149
156
|
{
|
150
157
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
151
158
|
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
152
|
-
$$ = rb_funcall(__actions, rb_intern("
|
159
|
+
$$ = rb_funcall(__actions, rb_intern("_1_components_2403a823f1a9854a29da7cf64f191fbe"), 1, $1);
|
153
160
|
}
|
154
161
|
|
155
162
|
|
|
@@ -158,7 +165,7 @@ components:
|
|
158
165
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
159
166
|
rb_ivar_set(__actions, rb_intern("@sequences"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
160
167
|
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX(@3.first_line), INT2FIX(@3.first_column)));
|
161
|
-
$$ = rb_funcall(__actions, rb_intern("
|
168
|
+
$$ = rb_funcall(__actions, rb_intern("_2_components_62da044340939f02b6c0b52917617e17"), 2, $1, $3);
|
162
169
|
}
|
163
170
|
|
164
171
|
;
|
@@ -167,7 +174,7 @@ sequence:
|
|
167
174
|
|
168
175
|
{
|
169
176
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
170
|
-
$$ = rb_funcall(__actions, rb_intern("
|
177
|
+
$$ = rb_funcall(__actions, rb_intern("_0_sequence_99914b932bd37a50b983c5e7c90ae93b"), 0);
|
171
178
|
}
|
172
179
|
|
173
180
|
|
|
@@ -176,7 +183,7 @@ sequence:
|
|
176
183
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
177
184
|
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
178
185
|
rb_ivar_set(__actions, rb_intern("@code"), rb_ary_new3(2, INT2FIX(@2.first_line), INT2FIX(@2.first_column)));
|
179
|
-
$$ = rb_funcall(__actions, rb_intern("
|
186
|
+
$$ = rb_funcall(__actions, rb_intern("_1_sequence_512ceffccf6bb7565046f90d6d7762ad"), 2, $1, $2);
|
180
187
|
}
|
181
188
|
|
182
189
|
|
|
@@ -185,7 +192,7 @@ sequence:
|
|
185
192
|
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
186
193
|
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
187
194
|
rb_ivar_set(__actions, rb_intern("@follower"), rb_ary_new3(2, INT2FIX(@2.first_line), INT2FIX(@2.first_column)));
|
188
|
-
$$ = rb_funcall(__actions, rb_intern("
|
195
|
+
$$ = rb_funcall(__actions, rb_intern("_2_sequence_4b2903c3aeb37d22d413a53653d0df28"), 2, $1, $2);
|
189
196
|
}
|
190
197
|
|
191
198
|
|
|
@@ -195,16 +202,7 @@ sequence:
|
|
195
202
|
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
196
203
|
rb_ivar_set(__actions, rb_intern("@follower"), rb_ary_new3(2, INT2FIX(@2.first_line), INT2FIX(@2.first_column)));
|
197
204
|
rb_ivar_set(__actions, rb_intern("@tag"), rb_ary_new3(2, INT2FIX(@4.first_line), INT2FIX(@4.first_column)));
|
198
|
-
$$ = rb_funcall(__actions, rb_intern("
|
199
|
-
}
|
200
|
-
|
201
|
-
|
|
202
|
-
sequence STRING
|
203
|
-
{
|
204
|
-
rb_ivar_set(__actions, rb_intern("@_"), rb_ary_new3(2, INT2FIX(@$.first_line), INT2FIX(@$.first_column)));
|
205
|
-
rb_ivar_set(__actions, rb_intern("@sequence"), rb_ary_new3(2, INT2FIX(@1.first_line), INT2FIX(@1.first_column)));
|
206
|
-
rb_ivar_set(__actions, rb_intern("@follower"), rb_ary_new3(2, INT2FIX(@2.first_line), INT2FIX(@2.first_column)));
|
207
|
-
$$ = rb_funcall(__actions, rb_intern("_4_sequence"), 2, $1, $2);
|
205
|
+
$$ = rb_funcall(__actions, rb_intern("_3_sequence_68f2380aa0f3a7de0fb9b3482705a54c"), 3, $1, $2, $4);
|
208
206
|
}
|
209
207
|
|
210
208
|
;
|
data/ext/bison_parser/extconf.rb
CHANGED
@@ -2,8 +2,6 @@ require 'mkmf'
|
|
2
2
|
|
3
3
|
output = "#{File.dirname(__FILE__)}/bison_parser.c"
|
4
4
|
bison_file = "#{File.dirname(__FILE__)}/bison_parser.y"
|
5
|
-
|
6
|
-
bison = ENV['BISON_PATH'] || 'bison'
|
7
|
-
system(bison, '-o', output, bison_file)
|
5
|
+
system('bison', '-o', output, bison_file)
|
8
6
|
|
9
7
|
create_makefile 'bison_parser/bison_parser'
|
data/lib/bison.rb
CHANGED
data/lib/bison/action.rb
CHANGED
@@ -48,7 +48,7 @@ module Bison
|
|
48
48
|
|
49
49
|
def name
|
50
50
|
base = "_#{sequence.index}_#{sequence.rule.name}"
|
51
|
-
|
51
|
+
base << "_#{Digest::MD5.hexdigest(predecessor_tags.inspect)}"
|
52
52
|
end
|
53
53
|
|
54
54
|
# What to do about default $1/Qnil?
|
data/lib/bison/grammar_file.rb
CHANGED
@@ -14,7 +14,7 @@ module Bison
|
|
14
14
|
errors = []
|
15
15
|
symbols = tokens.map(&:name) + rules.map(&:name)
|
16
16
|
rules.map(&:components).flatten.map(&:elements).flatten.each do |el|
|
17
|
-
|
17
|
+
unless !(Bison::Nonterminal === el) || symbols.include?(el.name)
|
18
18
|
errors << "#{el.location.join('.')}: #{el.name} is not defined"
|
19
19
|
end
|
20
20
|
end
|
data/lib/bison/version.rb
CHANGED
data/lib/bison_parser.rb
CHANGED
@@ -3,20 +3,6 @@ class BisonParser
|
|
3
3
|
attr_accessor :section
|
4
4
|
|
5
5
|
def lex
|
6
|
-
x = real_lex
|
7
|
-
Tokens.constants.each do |const|
|
8
|
-
if Tokens.const_get(const) == x
|
9
|
-
warn "Lex'd #{const}\t: #{lex_value.inspect}" if ENV['DEBUG_GRAMMAR']
|
10
|
-
return x
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
warn "Lex'd #{x.inspect}" if ENV['DEBUG_GRAMMAR']
|
15
|
-
|
16
|
-
x
|
17
|
-
end
|
18
|
-
|
19
|
-
def real_lex
|
20
6
|
self.section ||= 0
|
21
7
|
self.lex_value = nil
|
22
8
|
|
@@ -38,7 +24,7 @@ class BisonParser
|
|
38
24
|
break
|
39
25
|
end
|
40
26
|
end
|
41
|
-
|
27
|
+
|
42
28
|
return nil unless c
|
43
29
|
|
44
30
|
case c
|
@@ -76,20 +62,6 @@ class BisonParser
|
|
76
62
|
end
|
77
63
|
self.lex_value = number.to_i
|
78
64
|
return Tokens::NUMBER
|
79
|
-
when '"'
|
80
|
-
string = ''
|
81
|
-
while (c = self.read) && c != '"'
|
82
|
-
string << c
|
83
|
-
end
|
84
|
-
self.lex_value = string
|
85
|
-
return Tokens::STRING
|
86
|
-
when "'"
|
87
|
-
string = ''
|
88
|
-
while (c = self.read) && c != "'"
|
89
|
-
string << c
|
90
|
-
end
|
91
|
-
self.lex_value = string
|
92
|
-
return Tokens::STRING
|
93
65
|
end
|
94
66
|
|
95
67
|
if c =~ /\w/
|
@@ -111,9 +83,7 @@ class BisonParser
|
|
111
83
|
end
|
112
84
|
end
|
113
85
|
|
114
|
-
|
115
|
-
|
116
|
-
return c.ord
|
86
|
+
return nil
|
117
87
|
end
|
118
88
|
end
|
119
89
|
|
data/lib/bison_parser/actions.rb
CHANGED
@@ -2,80 +2,80 @@ class BisonParser
|
|
2
2
|
class Actions
|
3
3
|
attr_accessor :parser, :result
|
4
4
|
|
5
|
-
def
|
5
|
+
def _0_grammar_file_a94c71c90dcf6de40d17336b9d39db58(tokens, rules, code)
|
6
6
|
self.result = Bison::GrammarFile.new(tokens, rules, code)
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
9
|
+
def _0_optional_code_99914b932bd37a50b983c5e7c90ae93b()
|
10
10
|
nil
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def _1_optional_code_1359d45d91e668b6af09d4ac3c336a88(actions)
|
14
14
|
actions
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
17
|
+
def _0_token_list_99914b932bd37a50b983c5e7c90ae93b()
|
18
18
|
[]
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
21
|
+
def _1_token_list_21a28d2acdd128c24843b772a9881f2d(list, token)
|
22
22
|
list << token
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
25
|
+
def _0_token_f014c38ad08ecac5d62c0e3fa23163b3(name)
|
26
26
|
Bison::Token.new(name)
|
27
27
|
end
|
28
28
|
|
29
|
-
def
|
29
|
+
def _1_token_f014c38ad08ecac5d62c0e3fa23163b3(name)
|
30
30
|
Bison::Token.new(name, :left)
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
33
|
+
def _2_token_f014c38ad08ecac5d62c0e3fa23163b3(name)
|
34
34
|
Bison::Token.new(name, :right)
|
35
35
|
end
|
36
36
|
|
37
|
-
def
|
37
|
+
def _3_token_445055bddb5840e621fa399faa56aefc(token, num)
|
38
38
|
token.tap{ |t| t.number = num }
|
39
39
|
end
|
40
40
|
|
41
|
-
def
|
41
|
+
def _0_grammar_rules_99914b932bd37a50b983c5e7c90ae93b()
|
42
42
|
[]
|
43
43
|
end
|
44
44
|
|
45
|
-
def
|
45
|
+
def _1_grammar_rules_d4b402a4ddf06c5292ab917a96fe105c(list, rule)
|
46
46
|
list << rule
|
47
47
|
end
|
48
48
|
|
49
|
-
def
|
49
|
+
def _0_grammar_rule_bce7f6337f3284ba4a3537cc1d642c28(name, components)
|
50
50
|
Bison::Rule.new(name, components).tap{ |r| r.location = @name }
|
51
51
|
end
|
52
52
|
|
53
|
-
def
|
53
|
+
def _0_components_99914b932bd37a50b983c5e7c90ae93b()
|
54
|
+
[]
|
55
|
+
end
|
56
|
+
|
57
|
+
def _1_components_2403a823f1a9854a29da7cf64f191fbe(sequence)
|
54
58
|
[sequence]
|
55
59
|
end
|
56
60
|
|
57
|
-
def
|
61
|
+
def _2_components_62da044340939f02b6c0b52917617e17(sequences, sequence)
|
58
62
|
sequences << sequence
|
59
63
|
end
|
60
64
|
|
61
|
-
def
|
65
|
+
def _0_sequence_99914b932bd37a50b983c5e7c90ae93b()
|
62
66
|
Bison::Sequence.new
|
63
67
|
end
|
64
68
|
|
65
|
-
def
|
69
|
+
def _1_sequence_512ceffccf6bb7565046f90d6d7762ad(sequence, code)
|
66
70
|
sequence << Bison::Action.new(code).tap{ |a| a.location = @code }
|
67
71
|
end
|
68
72
|
|
69
|
-
def
|
73
|
+
def _2_sequence_4b2903c3aeb37d22d413a53653d0df28(sequence, follower)
|
70
74
|
sequence << Bison::Nonterminal.new(follower).tap{ |x| x.location = @follower }
|
71
75
|
end
|
72
76
|
|
73
|
-
def
|
77
|
+
def _3_sequence_68f2380aa0f3a7de0fb9b3482705a54c(sequence, follower, tag)
|
74
78
|
sequence << Bison::Nonterminal.new(follower, tag).tap{ |x| x.location = @follower }
|
75
79
|
end
|
76
|
-
|
77
|
-
def _4_sequence(sequence, follower)
|
78
|
-
sequence << Bison::String.new(follower).tap{ |x| x.location = @follower }
|
79
|
-
end
|
80
80
|
end
|
81
81
|
end
|
data/templates/parser.y.erb
CHANGED
@@ -102,20 +102,17 @@ static int yylex(YYSTYPE *lval, YYLTYPE *lloc, VALUE actions) {
|
|
102
102
|
|
103
103
|
if (vtok == Qnil) {
|
104
104
|
*lval = Qnil;
|
105
|
-
// fprintf(stderr, "parse is nil\n");
|
106
105
|
return 0;
|
107
106
|
}
|
108
107
|
|
109
108
|
if (vtok & 1) {
|
110
109
|
*lval = value;
|
111
|
-
// fprintf(stderr, "parse is int: %d\n", FIX2INT(vtok));
|
112
110
|
return FIX2INT(vtok);
|
113
111
|
}
|
114
112
|
|
115
113
|
if (RBASIC(vtok)->klass == rb_cString) {
|
116
114
|
c = StringValueCStr(vtok)[0];
|
117
115
|
*lval = rb_sprintf("%c", c);
|
118
|
-
// fprintf(stderr, "parse is char: '%c' (%d)\n", c, (int)c);
|
119
116
|
return c;
|
120
117
|
}
|
121
118
|
|