mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/syck/gram.c: sequence-in-map shortcut, transfer methods on
sequence-in-sequence, memory leak in mapping merge. [0.28] * ext/syck/syck.c: memory leak in domain anchoring. [0.28] * lib/yaml/rubytypes.rb, lib/yaml/types.rb: eliminated 1.6.x code. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
cf13323ff4
commit
f5a6a36471
8 changed files with 245 additions and 162 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
Wed May 14 20:09:26 2003 why the lucky stiff <ruby-cvs@whytheluckystiff.net>
|
||||||
|
|
||||||
|
* ext/syck/gram.c: sequence-in-map shortcut, transfer methods on
|
||||||
|
sequence-in-sequence, memory leak in mapping merge.
|
||||||
|
|
||||||
|
* ext/syck/syck.c: memory leak in domain anchoring.
|
||||||
|
|
||||||
|
* lib/yaml/rubytypes.rb, lib/yaml/types.rb: eliminated 1.6.x code.
|
||||||
|
|
||||||
Wed May 14 19:56:43 2003 NAKAMURA Usaku <usa@ruby-lang.org>
|
Wed May 14 19:56:43 2003 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
|
|
||||||
* ext/syck/rubyext.c: add prototypes to avoid VC++ warnings.
|
* ext/syck/rubyext.c: add prototypes to avoid VC++ warnings.
|
||||||
|
|
333
ext/syck/gram.c
333
ext/syck/gram.c
|
@ -229,16 +229,16 @@ union yyalloc
|
||||||
|
|
||||||
/* YYFINAL -- State number of the termination state. */
|
/* YYFINAL -- State number of the termination state. */
|
||||||
#define YYFINAL 32
|
#define YYFINAL 32
|
||||||
#define YYLAST 186
|
#define YYLAST 197
|
||||||
|
|
||||||
/* YYNTOKENS -- Number of terminals. */
|
/* YYNTOKENS -- Number of terminals. */
|
||||||
#define YYNTOKENS 23
|
#define YYNTOKENS 23
|
||||||
/* YYNNTS -- Number of nonterminals. */
|
/* YYNNTS -- Number of nonterminals. */
|
||||||
#define YYNNTS 21
|
#define YYNNTS 21
|
||||||
/* YYNRULES -- Number of rules. */
|
/* YYNRULES -- Number of rules. */
|
||||||
#define YYNRULES 47
|
#define YYNRULES 49
|
||||||
/* YYNRULES -- Number of states. */
|
/* YYNRULES -- Number of states. */
|
||||||
#define YYNSTATES 78
|
#define YYNSTATES 81
|
||||||
|
|
||||||
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
||||||
#define YYUNDEFTOK 2
|
#define YYUNDEFTOK 2
|
||||||
|
@ -286,9 +286,9 @@ static const unsigned char yyprhs[] =
|
||||||
{
|
{
|
||||||
0, 0, 3, 5, 8, 9, 11, 13, 16, 18,
|
0, 0, 3, 5, 8, 9, 11, 13, 16, 18,
|
||||||
22, 24, 25, 27, 30, 32, 34, 37, 40, 42,
|
22, 24, 25, 27, 30, 32, 34, 37, 40, 42,
|
||||||
44, 47, 49, 51, 53, 55, 57, 61, 64, 66,
|
44, 47, 49, 51, 53, 55, 57, 61, 67, 70,
|
||||||
70, 73, 77, 80, 82, 86, 90, 96, 100, 102,
|
72, 76, 79, 83, 86, 88, 92, 96, 102, 106,
|
||||||
108, 110, 114, 117, 121, 125, 128, 130
|
108, 114, 116, 120, 124, 127, 131, 135, 138, 140
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||||||
|
@ -300,11 +300,12 @@ static const yysigned_char yyrhs[] =
|
||||||
13, -1, 12, -1, 5, 30, -1, 6, 30, -1,
|
13, -1, 12, -1, 5, 30, -1, 6, 30, -1,
|
||||||
7, -1, 8, -1, 5, 31, -1, 9, -1, 32,
|
7, -1, 8, -1, 5, 31, -1, 9, -1, 32,
|
||||||
-1, 35, -1, 37, -1, 42, -1, 27, 34, 28,
|
-1, 35, -1, 37, -1, 42, -1, 27, 34, 28,
|
||||||
-1, 14, 26, -1, 33, -1, 34, 29, 33, -1,
|
-1, 27, 5, 29, 34, 28, -1, 14, 26, -1,
|
||||||
34, 29, -1, 17, 36, 18, -1, 17, 18, -1,
|
33, -1, 34, 29, 33, -1, 34, 29, -1, 17,
|
||||||
25, -1, 36, 21, 25, -1, 27, 40, 28, -1,
|
36, 18, -1, 17, 18, -1, 25, -1, 36, 21,
|
||||||
27, 5, 29, 40, 28, -1, 30, 15, 26, -1,
|
25, -1, 27, 40, 28, -1, 27, 5, 29, 40,
|
||||||
38, -1, 22, 25, 29, 15, 26, -1, 39, -1,
|
28, -1, 30, 15, 26, -1, 38, -1, 22, 25,
|
||||||
|
29, 15, 26, -1, 39, -1, 40, 29, 33, -1,
|
||||||
40, 29, 39, -1, 40, 29, -1, 25, 15, 26,
|
40, 29, 39, -1, 40, 29, -1, 25, 15, 26,
|
||||||
-1, 19, 43, 20, -1, 19, 20, -1, 41, -1,
|
-1, 19, 43, 20, -1, 19, 20, -1, 41, -1,
|
||||||
43, 21, 41, -1
|
43, 21, 41, -1
|
||||||
|
@ -315,9 +316,9 @@ static const unsigned short yyrline[] =
|
||||||
{
|
{
|
||||||
0, 44, 44, 48, 52, 58, 59, 60, 69, 77,
|
0, 44, 44, 48, 52, 58, 59, 60, 69, 77,
|
||||||
83, 84, 102, 103, 106, 109, 117, 122, 130, 143,
|
83, 84, 102, 103, 106, 109, 117, 122, 130, 143,
|
||||||
150, 155, 156, 157, 158, 159, 165, 171, 177, 181,
|
150, 155, 156, 157, 158, 159, 165, 169, 176, 182,
|
||||||
186, 195, 199, 205, 209, 219, 223, 230, 245, 246,
|
186, 191, 200, 204, 210, 214, 224, 229, 237, 252,
|
||||||
254, 255, 260, 269, 277, 281, 287, 288
|
253, 261, 262, 274, 281, 291, 299, 303, 309, 310
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -353,9 +354,9 @@ static const unsigned char yyr1[] =
|
||||||
{
|
{
|
||||||
0, 23, 24, 24, 24, 25, 25, 25, 25, 25,
|
0, 23, 24, 24, 24, 25, 25, 25, 25, 25,
|
||||||
26, 26, 27, 27, 28, 29, 30, 30, 30, 30,
|
26, 26, 27, 27, 28, 29, 30, 30, 30, 30,
|
||||||
31, 31, 31, 31, 31, 31, 32, 33, 34, 34,
|
31, 31, 31, 31, 31, 31, 32, 32, 33, 34,
|
||||||
34, 35, 35, 36, 36, 37, 37, 38, 39, 39,
|
34, 34, 35, 35, 36, 36, 37, 37, 38, 39,
|
||||||
40, 40, 40, 41, 42, 42, 43, 43
|
39, 40, 40, 40, 40, 41, 42, 42, 43, 43
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
||||||
|
@ -363,9 +364,9 @@ static const unsigned char yyr2[] =
|
||||||
{
|
{
|
||||||
0, 2, 1, 2, 0, 1, 1, 2, 1, 3,
|
0, 2, 1, 2, 0, 1, 1, 2, 1, 3,
|
||||||
1, 0, 1, 2, 1, 1, 2, 2, 1, 1,
|
1, 0, 1, 2, 1, 1, 2, 2, 1, 1,
|
||||||
2, 1, 1, 1, 1, 1, 3, 2, 1, 3,
|
2, 1, 1, 1, 1, 1, 3, 5, 2, 1,
|
||||||
2, 3, 2, 1, 3, 3, 5, 3, 1, 5,
|
3, 2, 3, 2, 1, 3, 3, 5, 3, 1,
|
||||||
1, 3, 2, 3, 3, 2, 1, 3
|
5, 1, 3, 3, 2, 3, 3, 2, 1, 3
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
|
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
|
||||||
|
@ -375,12 +376,13 @@ static const unsigned char yydefact[] =
|
||||||
{
|
{
|
||||||
4, 0, 21, 0, 12, 0, 0, 0, 0, 2,
|
4, 0, 21, 0, 12, 0, 0, 0, 0, 2,
|
||||||
22, 23, 24, 25, 20, 0, 8, 0, 0, 18,
|
22, 23, 24, 25, 20, 0, 8, 0, 0, 18,
|
||||||
19, 3, 0, 5, 6, 32, 33, 0, 45, 0,
|
19, 3, 0, 5, 6, 33, 34, 0, 47, 0,
|
||||||
46, 0, 1, 0, 13, 11, 0, 0, 28, 0,
|
48, 0, 1, 0, 13, 11, 0, 0, 29, 0,
|
||||||
38, 40, 0, 7, 16, 0, 17, 0, 0, 5,
|
39, 41, 0, 7, 16, 0, 17, 0, 0, 5,
|
||||||
31, 0, 11, 44, 0, 15, 0, 10, 27, 0,
|
32, 0, 11, 46, 0, 15, 0, 10, 28, 0,
|
||||||
11, 14, 26, 30, 35, 42, 9, 34, 43, 47,
|
11, 14, 26, 31, 36, 44, 9, 35, 45, 49,
|
||||||
0, 0, 37, 29, 41, 36, 11, 39
|
0, 0, 0, 38, 30, 42, 43, 27, 37, 11,
|
||||||
|
40
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYDEFGOTO[NTERM-NUM]. */
|
/* YYDEFGOTO[NTERM-NUM]. */
|
||||||
|
@ -393,25 +395,26 @@ static const yysigned_char yydefgoto[] =
|
||||||
|
|
||||||
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
||||||
STATE-NUM. */
|
STATE-NUM. */
|
||||||
#define YYPACT_NINF -45
|
#define YYPACT_NINF -41
|
||||||
static const short yypact[] =
|
static const short yypact[] =
|
||||||
{
|
{
|
||||||
156, 167, -45, 121, -45, 104, 76, 19, 92, -45,
|
166, 177, -41, 131, -41, 114, 76, 5, 92, -41,
|
||||||
-45, -45, -45, -45, -45, 121, -45, 151, 111, -45,
|
-41, -41, -41, -41, -41, 131, -41, 161, 83, -41,
|
||||||
-45, -45, 56, -45, -45, -45, -45, 8, -45, 9,
|
-41, -41, 56, -41, -41, -41, -41, 1, -41, 2,
|
||||||
-45, -3, -45, 39, -45, 121, 121, 12, -45, 18,
|
-41, 12, -41, 185, -41, 131, 131, 25, -41, 14,
|
||||||
-45, -45, 18, -45, -45, 111, -45, 136, 22, 12,
|
-41, -41, 14, -41, -41, 83, -41, 146, 8, 25,
|
||||||
-45, 121, 121, -45, 121, -45, 83, -45, -45, 24,
|
-41, 131, 131, -41, 131, -41, 102, -41, -41, 17,
|
||||||
121, -45, -45, 26, -45, 83, -45, -45, -45, -45,
|
131, -41, -41, 27, -41, 102, -41, -41, -41, -41,
|
||||||
18, 23, -45, -45, -45, -45, 121, -45
|
14, 14, 29, -41, -41, -41, -41, -41, -41, 131,
|
||||||
|
-41
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYPGOTO[NTERM-NUM]. */
|
/* YYPGOTO[NTERM-NUM]. */
|
||||||
static const yysigned_char yypgoto[] =
|
static const yysigned_char yypgoto[] =
|
||||||
{
|
{
|
||||||
-45, -45, -2, -44, 6, -27, -37, -8, 11, -45,
|
-41, -41, -2, -36, 6, -40, -24, -8, 11, -41,
|
||||||
-22, -45, -45, -45, -45, -45, -23, -6, 0, -45,
|
-27, -14, -41, -41, -41, -41, -20, -6, -3, -41,
|
||||||
-45
|
-41
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
||||||
|
@ -421,48 +424,50 @@ static const yysigned_char yypgoto[] =
|
||||||
#define YYTABLE_NINF -1
|
#define YYTABLE_NINF -1
|
||||||
static const unsigned char yytable[] =
|
static const unsigned char yytable[] =
|
||||||
{
|
{
|
||||||
37, 21, 63, 26, 29, 65, 8, 8, 68, 44,
|
37, 21, 64, 26, 29, 32, 8, 8, 66, 44,
|
||||||
46, 9, 14, 43, 49, 64, 72, 53, 54, 32,
|
46, 9, 14, 43, 49, 63, 68, 52, 65, 50,
|
||||||
48, 66, 71, 8, 52, 44, 50, 60, 14, 51,
|
48, 61, 51, 8, 73, 44, 55, 61, 14, 55,
|
||||||
55, 61, 77, 65, 59, 61, 55, 44, 76, 44,
|
77, 78, 53, 54, 59, 72, 74, 44, 75, 44,
|
||||||
35, 73, 74, 75, 45, 18, 19, 20, 37, 67,
|
60, 35, 70, 80, 79, 76, 63, 65, 37, 67,
|
||||||
70, 55, 29, 8, 69, 0, 0, 37, 14, 15,
|
71, 69, 29, 8, 0, 0, 0, 37, 14, 15,
|
||||||
16, 47, 18, 19, 20, 2, 0, 4, 34, 0,
|
16, 47, 18, 19, 20, 2, 0, 4, 34, 0,
|
||||||
35, 0, 0, 5, 0, 6, 0, 0, 36, 15,
|
35, 0, 0, 5, 0, 6, 0, 0, 36, 15,
|
||||||
16, 17, 18, 19, 20, 2, 0, 4, 45, 18,
|
16, 17, 18, 19, 20, 2, 0, 4, 45, 18,
|
||||||
19, 20, 0, 5, 0, 6, 28, 33, 18, 19,
|
19, 20, 0, 5, 0, 6, 28, 33, 18, 19,
|
||||||
20, 0, 0, 0, 34, 36, 35, 15, 16, 17,
|
20, 0, 0, 0, 34, 0, 35, 45, 18, 19,
|
||||||
18, 19, 20, 2, 36, 4, 45, 18, 19, 20,
|
20, 0, 0, 0, 36, 0, 35, 15, 16, 17,
|
||||||
|
18, 19, 20, 2, 36, 4, 0, 0, 0, 0,
|
||||||
0, 5, 25, 6, 15, 16, 17, 18, 19, 20,
|
0, 5, 25, 6, 15, 16, 17, 18, 19, 20,
|
||||||
2, 0, 4, 0, 0, 0, 0, 0, 5, 0,
|
2, 0, 4, 0, 0, 0, 0, 0, 5, 0,
|
||||||
6, 17, 18, 19, 20, 2, 0, 4, 55, 0,
|
6, 17, 18, 19, 20, 2, 0, 4, 55, 0,
|
||||||
0, 0, 0, 5, 0, 6, 17, 18, 19, 20,
|
0, 0, 0, 5, 0, 6, 17, 18, 19, 20,
|
||||||
2, 1, 4, 0, 0, 2, 3, 4, 5, 0,
|
2, 1, 4, 0, 0, 2, 3, 4, 5, 0,
|
||||||
6, 0, 1, 5, 0, 6, 2, 0, 4, 0,
|
6, 0, 1, 5, 0, 6, 2, 0, 4, 0,
|
||||||
0, 0, 0, 0, 5, 0, 6
|
45, 18, 19, 20, 5, 0, 6, 55
|
||||||
};
|
};
|
||||||
|
|
||||||
static const yysigned_char yycheck[] =
|
static const yysigned_char yycheck[] =
|
||||||
{
|
{
|
||||||
8, 3, 39, 5, 6, 42, 0, 1, 52, 17,
|
8, 3, 42, 5, 6, 0, 0, 1, 48, 17,
|
||||||
18, 0, 1, 15, 22, 42, 60, 20, 21, 0,
|
18, 0, 1, 15, 22, 39, 52, 15, 42, 18,
|
||||||
22, 48, 59, 17, 15, 33, 18, 15, 17, 21,
|
22, 13, 21, 17, 60, 33, 12, 13, 17, 12,
|
||||||
12, 13, 76, 70, 36, 13, 12, 45, 15, 47,
|
70, 71, 20, 21, 36, 59, 63, 45, 65, 47,
|
||||||
14, 63, 65, 70, 5, 6, 7, 8, 56, 51,
|
15, 14, 56, 79, 15, 65, 70, 71, 56, 51,
|
||||||
56, 12, 54, 47, 54, -1, -1, 65, 47, 3,
|
56, 54, 54, 47, -1, -1, -1, 65, 47, 3,
|
||||||
4, 5, 6, 7, 8, 9, -1, 11, 12, -1,
|
4, 5, 6, 7, 8, 9, -1, 11, 12, -1,
|
||||||
14, -1, -1, 17, -1, 19, -1, -1, 22, 3,
|
14, -1, -1, 17, -1, 19, -1, -1, 22, 3,
|
||||||
4, 5, 6, 7, 8, 9, -1, 11, 5, 6,
|
4, 5, 6, 7, 8, 9, -1, 11, 5, 6,
|
||||||
7, 8, -1, 17, -1, 19, 20, 5, 6, 7,
|
7, 8, -1, 17, -1, 19, 20, 5, 6, 7,
|
||||||
8, -1, -1, -1, 12, 22, 14, 3, 4, 5,
|
8, -1, -1, -1, 12, -1, 14, 5, 6, 7,
|
||||||
6, 7, 8, 9, 22, 11, 5, 6, 7, 8,
|
8, -1, -1, -1, 22, -1, 14, 3, 4, 5,
|
||||||
|
6, 7, 8, 9, 22, 11, -1, -1, -1, -1,
|
||||||
-1, 17, 18, 19, 3, 4, 5, 6, 7, 8,
|
-1, 17, 18, 19, 3, 4, 5, 6, 7, 8,
|
||||||
9, -1, 11, -1, -1, -1, -1, -1, 17, -1,
|
9, -1, 11, -1, -1, -1, -1, -1, 17, -1,
|
||||||
19, 5, 6, 7, 8, 9, -1, 11, 12, -1,
|
19, 5, 6, 7, 8, 9, -1, 11, 12, -1,
|
||||||
-1, -1, -1, 17, -1, 19, 5, 6, 7, 8,
|
-1, -1, -1, 17, -1, 19, 5, 6, 7, 8,
|
||||||
9, 5, 11, -1, -1, 9, 10, 11, 17, -1,
|
9, 5, 11, -1, -1, 9, 10, 11, 17, -1,
|
||||||
19, -1, 5, 17, -1, 19, 9, -1, 11, -1,
|
19, -1, 5, 17, -1, 19, 9, -1, 11, -1,
|
||||||
-1, -1, -1, -1, 17, -1, 19
|
5, 6, 7, 8, 17, -1, 19, 12
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
||||||
|
@ -476,7 +481,8 @@ static const unsigned char yystos[] =
|
||||||
38, 39, 40, 25, 30, 5, 30, 5, 25, 30,
|
38, 39, 40, 25, 30, 5, 30, 5, 25, 30,
|
||||||
18, 21, 15, 20, 21, 12, 29, 25, 26, 25,
|
18, 21, 15, 20, 21, 12, 29, 25, 26, 25,
|
||||||
15, 13, 28, 29, 28, 29, 28, 25, 26, 41,
|
15, 13, 28, 29, 28, 29, 28, 25, 26, 41,
|
||||||
40, 29, 26, 33, 39, 28, 15, 26
|
34, 40, 29, 26, 33, 33, 39, 28, 28, 15,
|
||||||
|
26
|
||||||
};
|
};
|
||||||
|
|
||||||
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
|
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
|
||||||
|
@ -1148,80 +1154,90 @@ yyreduce:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 27:
|
case 27:
|
||||||
#line 172 "gram.y"
|
#line 170 "gram.y"
|
||||||
{
|
|
||||||
yyval.nodeId = syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 28:
|
|
||||||
#line 178 "gram.y"
|
|
||||||
{
|
|
||||||
yyval.nodeData = syck_new_seq( yyvsp[0].nodeId );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 29:
|
|
||||||
#line 182 "gram.y"
|
|
||||||
{
|
|
||||||
syck_seq_add( yyvsp[-2].nodeData, yyvsp[0].nodeId );
|
|
||||||
yyval.nodeData = yyvsp[-2].nodeData;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 30:
|
|
||||||
#line 187 "gram.y"
|
|
||||||
{
|
|
||||||
yyval.nodeData = yyvsp[-1].nodeData;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 31:
|
|
||||||
#line 196 "gram.y"
|
|
||||||
{
|
|
||||||
yyval.nodeData = yyvsp[-1].nodeData;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 32:
|
|
||||||
#line 200 "gram.y"
|
|
||||||
{
|
|
||||||
yyval.nodeData = syck_alloc_seq();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 33:
|
|
||||||
#line 206 "gram.y"
|
|
||||||
{
|
|
||||||
yyval.nodeData = syck_new_seq( syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData ) );
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 34:
|
|
||||||
#line 210 "gram.y"
|
|
||||||
{
|
|
||||||
syck_seq_add( yyvsp[-2].nodeData, syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData ) );
|
|
||||||
yyval.nodeData = yyvsp[-2].nodeData;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 35:
|
|
||||||
#line 220 "gram.y"
|
|
||||||
{
|
|
||||||
yyval.nodeData = yyvsp[-1].nodeData;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 36:
|
|
||||||
#line 224 "gram.y"
|
|
||||||
{
|
{
|
||||||
syck_add_transfer( yyvsp[-3].name, yyvsp[-1].nodeData, ((SyckParser *)parser)->taguri_expansion );
|
syck_add_transfer( yyvsp[-3].name, yyvsp[-1].nodeData, ((SyckParser *)parser)->taguri_expansion );
|
||||||
yyval.nodeData = yyvsp[-1].nodeData;
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 28:
|
||||||
|
#line 177 "gram.y"
|
||||||
|
{
|
||||||
|
yyval.nodeId = syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 29:
|
||||||
|
#line 183 "gram.y"
|
||||||
|
{
|
||||||
|
yyval.nodeData = syck_new_seq( yyvsp[0].nodeId );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 30:
|
||||||
|
#line 187 "gram.y"
|
||||||
|
{
|
||||||
|
syck_seq_add( yyvsp[-2].nodeData, yyvsp[0].nodeId );
|
||||||
|
yyval.nodeData = yyvsp[-2].nodeData;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 31:
|
||||||
|
#line 192 "gram.y"
|
||||||
|
{
|
||||||
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 32:
|
||||||
|
#line 201 "gram.y"
|
||||||
|
{
|
||||||
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 33:
|
||||||
|
#line 205 "gram.y"
|
||||||
|
{
|
||||||
|
yyval.nodeData = syck_alloc_seq();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 34:
|
||||||
|
#line 211 "gram.y"
|
||||||
|
{
|
||||||
|
yyval.nodeData = syck_new_seq( syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData ) );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 35:
|
||||||
|
#line 215 "gram.y"
|
||||||
|
{
|
||||||
|
syck_seq_add( yyvsp[-2].nodeData, syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData ) );
|
||||||
|
yyval.nodeData = yyvsp[-2].nodeData;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 36:
|
||||||
|
#line 225 "gram.y"
|
||||||
|
{
|
||||||
|
apply_seq_in_map( (SyckParser *)parser, yyvsp[-1].nodeData );
|
||||||
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 37:
|
case 37:
|
||||||
#line 231 "gram.y"
|
#line 230 "gram.y"
|
||||||
|
{
|
||||||
|
apply_seq_in_map( (SyckParser *)parser, yyvsp[-1].nodeData );
|
||||||
|
syck_add_transfer( yyvsp[-3].name, yyvsp[-1].nodeData, ((SyckParser *)parser)->taguri_expansion );
|
||||||
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 38:
|
||||||
|
#line 238 "gram.y"
|
||||||
{
|
{
|
||||||
yyval.nodeData = syck_new_map(
|
yyval.nodeData = syck_new_map(
|
||||||
syck_hdlr_add_node( (SyckParser *)parser, yyvsp[-2].nodeData ),
|
syck_hdlr_add_node( (SyckParser *)parser, yyvsp[-2].nodeData ),
|
||||||
|
@ -1229,8 +1245,8 @@ yyreduce:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 39:
|
case 40:
|
||||||
#line 247 "gram.y"
|
#line 254 "gram.y"
|
||||||
{
|
{
|
||||||
yyval.nodeData = syck_new_map(
|
yyval.nodeData = syck_new_map(
|
||||||
syck_hdlr_add_node( (SyckParser *)parser, yyvsp[-3].nodeData ),
|
syck_hdlr_add_node( (SyckParser *)parser, yyvsp[-3].nodeData ),
|
||||||
|
@ -1238,23 +1254,41 @@ yyreduce:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 41:
|
case 42:
|
||||||
#line 256 "gram.y"
|
#line 263 "gram.y"
|
||||||
{
|
{
|
||||||
syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
|
if ( yyvsp[-2].nodeData->shortcut == NULL )
|
||||||
|
{
|
||||||
|
yyvsp[-2].nodeData->shortcut = syck_new_seq( yyvsp[0].nodeId );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
syck_seq_add( yyvsp[-2].nodeData->shortcut, yyvsp[0].nodeId );
|
||||||
|
}
|
||||||
yyval.nodeData = yyvsp[-2].nodeData;
|
yyval.nodeData = yyvsp[-2].nodeData;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 42:
|
case 43:
|
||||||
#line 261 "gram.y"
|
#line 275 "gram.y"
|
||||||
{
|
{
|
||||||
|
apply_seq_in_map( (SyckParser *)parser, yyvsp[-2].nodeData );
|
||||||
|
syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
|
||||||
|
syck_free_node( yyvsp[0].nodeData );
|
||||||
|
yyval.nodeData = yyvsp[-2].nodeData;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 44:
|
||||||
|
#line 282 "gram.y"
|
||||||
|
{
|
||||||
|
apply_seq_in_map( (SyckParser *)parser, yyvsp[-1].nodeData );
|
||||||
yyval.nodeData = yyvsp[-1].nodeData;
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 43:
|
case 45:
|
||||||
#line 270 "gram.y"
|
#line 292 "gram.y"
|
||||||
{
|
{
|
||||||
yyval.nodeData = syck_new_map(
|
yyval.nodeData = syck_new_map(
|
||||||
syck_hdlr_add_node( (SyckParser *)parser, yyvsp[-2].nodeData ),
|
syck_hdlr_add_node( (SyckParser *)parser, yyvsp[-2].nodeData ),
|
||||||
|
@ -1262,24 +1296,25 @@ yyreduce:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 44:
|
case 46:
|
||||||
#line 278 "gram.y"
|
#line 300 "gram.y"
|
||||||
{
|
{
|
||||||
yyval.nodeData = yyvsp[-1].nodeData;
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 45:
|
case 47:
|
||||||
#line 282 "gram.y"
|
#line 304 "gram.y"
|
||||||
{
|
{
|
||||||
yyval.nodeData = syck_alloc_map();
|
yyval.nodeData = syck_alloc_map();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 47:
|
case 49:
|
||||||
#line 289 "gram.y"
|
#line 311 "gram.y"
|
||||||
{
|
{
|
||||||
syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
|
syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
|
||||||
|
syck_free_node( yyvsp[0].nodeData );
|
||||||
yyval.nodeData = yyvsp[-2].nodeData;
|
yyval.nodeData = yyvsp[-2].nodeData;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1288,7 +1323,7 @@ yyreduce:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Line 1016 of /usr/local/share/bison/yacc.c. */
|
/* Line 1016 of /usr/local/share/bison/yacc.c. */
|
||||||
#line 1292 "y.tab.c"
|
#line 1327 "y.tab.c"
|
||||||
|
|
||||||
yyvsp -= yylen;
|
yyvsp -= yylen;
|
||||||
yyssp -= yylen;
|
yyssp -= yylen;
|
||||||
|
@ -1507,7 +1542,23 @@ yyreturn:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#line 295 "gram.y"
|
#line 318 "gram.y"
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
apply_seq_in_map( SyckParser *parser, SyckNode *n )
|
||||||
|
{
|
||||||
|
long map_len;
|
||||||
|
if ( n->shortcut == NULL )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
map_len = syck_map_count( n );
|
||||||
|
syck_map_assign( n, map_value, map_len - 1,
|
||||||
|
syck_hdlr_add_node( parser, n->shortcut ) );
|
||||||
|
|
||||||
|
n->shortcut = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ syck_alloc_node( enum syck_kind_tag type )
|
||||||
s->id = 0;
|
s->id = 0;
|
||||||
s->type_id = NULL;
|
s->type_id = NULL;
|
||||||
s->anchor = NULL;
|
s->anchor = NULL;
|
||||||
|
s->shortcut = NULL;
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
@ -207,6 +208,24 @@ syck_map_count( SyckNode *map )
|
||||||
return map->data.pairs->idx;
|
return map->data.pairs->idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
syck_map_assign( SyckNode *map, enum map_part p, long idx, SYMID id )
|
||||||
|
{
|
||||||
|
struct SyckMap *m;
|
||||||
|
|
||||||
|
ASSERT( map != NULL );
|
||||||
|
m = map->data.pairs;
|
||||||
|
ASSERT( m != NULL );
|
||||||
|
if ( p == map_key )
|
||||||
|
{
|
||||||
|
m->keys[idx] = id;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m->values[idx] = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SYMID
|
SYMID
|
||||||
syck_map_read( SyckNode *map, enum map_part p, long idx )
|
syck_map_read( SyckNode *map, enum map_part p, long idx )
|
||||||
{
|
{
|
||||||
|
|
|
@ -106,12 +106,20 @@ syck_io_str_read( char *buf, SyckIoStr *str, long max_size, long skip )
|
||||||
|
|
||||||
void
|
void
|
||||||
syck_parser_reset_levels( SyckParser *p )
|
syck_parser_reset_levels( SyckParser *p )
|
||||||
|
{
|
||||||
|
while ( p->lvl_idx > 1 )
|
||||||
|
{
|
||||||
|
syck_parser_pop_level( p );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( p->lvl_idx < 1 )
|
||||||
{
|
{
|
||||||
p->lvl_idx = 1;
|
p->lvl_idx = 1;
|
||||||
p->levels[0].spaces = -1;
|
p->levels[0].spaces = -1;
|
||||||
p->levels[0].domain = syck_strndup( "", 1 ); // YAML_DOMAIN + "/";
|
p->levels[0].domain = ""; // YAML_DOMAIN + "/";
|
||||||
p->levels[0].status = syck_lvl_header;
|
p->levels[0].status = syck_lvl_header;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
syck_parser_reset_cursor( SyckParser *p )
|
syck_parser_reset_cursor( SyckParser *p )
|
||||||
|
@ -153,6 +161,7 @@ syck_new_parser()
|
||||||
p->taguri_expansion = 0;
|
p->taguri_expansion = 0;
|
||||||
p->bufsize = SYCK_BUFFERSIZE;
|
p->bufsize = SYCK_BUFFERSIZE;
|
||||||
p->buffer = NULL;
|
p->buffer = NULL;
|
||||||
|
p->lvl_idx = 0;
|
||||||
syck_parser_reset_levels( p );
|
syck_parser_reset_levels( p );
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
@ -166,7 +175,7 @@ syck_add_sym( SyckParser *p, char *data )
|
||||||
p->syms = st_init_numtable();
|
p->syms = st_init_numtable();
|
||||||
}
|
}
|
||||||
id = p->syms->num_entries;
|
id = p->syms->num_entries;
|
||||||
st_insert( p->syms, id, (st_data_t)data );
|
st_insert( p->syms, id, data );
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,10 +183,10 @@ int
|
||||||
syck_lookup_sym( SyckParser *p, SYMID id, char **data )
|
syck_lookup_sym( SyckParser *p, SYMID id, char **data )
|
||||||
{
|
{
|
||||||
if ( p->syms == NULL ) return 0;
|
if ( p->syms == NULL ) return 0;
|
||||||
return st_lookup( p->syms, id, (st_data_t *)data );
|
return st_lookup( p->syms, id, data );
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
enum st_retval
|
||||||
syck_st_free_nodes( char *key, SyckNode *n, char *arg )
|
syck_st_free_nodes( char *key, SyckNode *n, char *arg )
|
||||||
{
|
{
|
||||||
syck_free_node( n );
|
syck_free_node( n );
|
||||||
|
@ -201,13 +210,15 @@ syck_free_parser( SyckParser *p )
|
||||||
//
|
//
|
||||||
// Free the anchor table
|
// Free the anchor table
|
||||||
//
|
//
|
||||||
st_foreach( p->anchors, syck_st_free_nodes, 0 );
|
st_foreach( p->anchors, syck_st_free_nodes, NULL );
|
||||||
st_free_table( p->anchors );
|
st_free_table( p->anchors );
|
||||||
|
|
||||||
//
|
//
|
||||||
// Free all else
|
// Free all else
|
||||||
//
|
//
|
||||||
|
syck_parser_reset_levels( p );
|
||||||
S_FREE( p->levels );
|
S_FREE( p->levels );
|
||||||
|
|
||||||
if ( p->buffer != NULL )
|
if ( p->buffer != NULL )
|
||||||
{
|
{
|
||||||
S_FREE( p->buffer );
|
S_FREE( p->buffer );
|
||||||
|
|
|
@ -10,15 +10,11 @@
|
||||||
#ifndef SYCK_H
|
#ifndef SYCK_H
|
||||||
#define SYCK_H
|
#define SYCK_H
|
||||||
|
|
||||||
#define SYCK_VERSION "0.25"
|
#define SYCK_VERSION "0.28"
|
||||||
#define YAML_DOMAIN "yaml.org,2002"
|
#define YAML_DOMAIN "yaml.org,2002"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#ifdef HAVE_ST_H
|
#include "../../st.h"
|
||||||
#include <st.h>
|
|
||||||
#else
|
|
||||||
#include "syck_st.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -116,6 +112,7 @@ struct _syck_node {
|
||||||
long len;
|
long len;
|
||||||
} *str;
|
} *str;
|
||||||
} data;
|
} data;
|
||||||
|
void *shortcut;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -248,11 +245,13 @@ SyckNode *syck_new_map( SYMID, SYMID );
|
||||||
void syck_map_add( SyckNode *, SYMID, SYMID );
|
void syck_map_add( SyckNode *, SYMID, SYMID );
|
||||||
SYMID syck_map_read( SyckNode *, enum map_part, long );
|
SYMID syck_map_read( SyckNode *, enum map_part, long );
|
||||||
long syck_map_count( SyckNode * );
|
long syck_map_count( SyckNode * );
|
||||||
|
void syck_map_assign( SyckNode *, enum map_part, long, SYMID );
|
||||||
void syck_map_update( SyckNode *, SyckNode * );
|
void syck_map_update( SyckNode *, SyckNode * );
|
||||||
SyckNode *syck_new_seq( SYMID );
|
SyckNode *syck_new_seq( SYMID );
|
||||||
void syck_seq_add( SyckNode *, SYMID );
|
void syck_seq_add( SyckNode *, SYMID );
|
||||||
SYMID syck_seq_read( SyckNode *, long );
|
SYMID syck_seq_read( SyckNode *, long );
|
||||||
long syck_seq_count( SyckNode * );
|
long syck_seq_count( SyckNode * );
|
||||||
|
void apply_seq_in_map( SyckParser *, SyckNode * );
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
} /* extern "C" { */
|
} /* extern "C" { */
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
module YAML
|
module YAML
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require 'syck'
|
require 'yaml/syck'
|
||||||
@@parser = YAML::Syck::Parser
|
@@parser = YAML::Syck::Parser
|
||||||
@@loader = YAML::Syck::DefaultLoader
|
@@loader = YAML::Syck::DefaultLoader
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
|
|
|
@ -3,9 +3,6 @@ require 'date'
|
||||||
# Type conversions
|
# Type conversions
|
||||||
#
|
#
|
||||||
|
|
||||||
# Ruby 1.6.x Object#object_id
|
|
||||||
class Object; alias_method :object_id, :id; end unless Object.respond_to? :object_id
|
|
||||||
|
|
||||||
class Object
|
class Object
|
||||||
def is_complex_yaml?
|
def is_complex_yaml?
|
||||||
true
|
true
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
# Classes required by the full core typeset
|
# Classes required by the full core typeset
|
||||||
#
|
#
|
||||||
|
|
||||||
# Ruby 1.6.x Object#object_id
|
|
||||||
class Object; alias_method :object_id, :id; end unless Object.respond_to? :object_id
|
|
||||||
|
|
||||||
module YAML
|
module YAML
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue