зеркало из https://github.com/github/ruby.git
* lib/yaml/rubytypes.rb: object and struct loading
* lib/yaml.rb: YAML::detect_implicit will discover typing for a Ruby string * ext/syck/: Fixed portable comments, misuse of NULL and methods without return VALUEs. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
cea30a129a
Коммит
bd810795c5
187
ext/syck/gram.c
187
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 132
|
#define YYLAST 186
|
||||||
|
|
||||||
/* 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 46
|
#define YYNRULES 47
|
||||||
/* YYNRULES -- Number of states. */
|
/* YYNRULES -- Number of states. */
|
||||||
#define YYNSTATES 73
|
#define YYNSTATES 78
|
||||||
|
|
||||||
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
||||||
#define YYUNDEFTOK 2
|
#define YYUNDEFTOK 2
|
||||||
|
@ -287,8 +287,8 @@ 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, 64, 66,
|
||||||
70, 73, 77, 80, 82, 86, 90, 94, 96, 102,
|
70, 73, 77, 80, 82, 86, 90, 96, 100, 102,
|
||||||
104, 108, 111, 115, 119, 122, 124
|
108, 110, 114, 117, 121, 125, 128, 130
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||||||
|
@ -303,10 +303,11 @@ static const yysigned_char yyrhs[] =
|
||||||
-1, 14, 26, -1, 33, -1, 34, 29, 33, -1,
|
-1, 14, 26, -1, 33, -1, 34, 29, 33, -1,
|
||||||
34, 29, -1, 17, 36, 18, -1, 17, 18, -1,
|
34, 29, -1, 17, 36, 18, -1, 17, 18, -1,
|
||||||
25, -1, 36, 21, 25, -1, 27, 40, 28, -1,
|
25, -1, 36, 21, 25, -1, 27, 40, 28, -1,
|
||||||
30, 15, 26, -1, 38, -1, 22, 25, 29, 15,
|
27, 5, 29, 40, 28, -1, 30, 15, 26, -1,
|
||||||
26, -1, 39, -1, 40, 29, 39, -1, 40, 29,
|
38, -1, 22, 25, 29, 15, 26, -1, 39, -1,
|
||||||
-1, 25, 15, 26, -1, 19, 43, 20, -1, 19,
|
40, 29, 39, -1, 40, 29, -1, 25, 15, 26,
|
||||||
20, -1, 41, -1, 43, 21, 41, -1
|
-1, 19, 43, 20, -1, 19, 20, -1, 41, -1,
|
||||||
|
43, 21, 41, -1
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
||||||
|
@ -315,8 +316,8 @@ 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, 171, 177, 181,
|
||||||
186, 195, 199, 205, 209, 219, 225, 240, 241, 249,
|
186, 195, 199, 205, 209, 219, 223, 230, 245, 246,
|
||||||
250, 255, 264, 272, 276, 282, 283
|
254, 255, 260, 269, 277, 281, 287, 288
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -353,8 +354,8 @@ 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, 33, 34, 34,
|
||||||
34, 35, 35, 36, 36, 37, 38, 39, 39, 40,
|
34, 35, 35, 36, 36, 37, 37, 38, 39, 39,
|
||||||
40, 40, 41, 42, 42, 43, 43
|
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,8 +364,8 @@ 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, 2, 1, 3,
|
||||||
2, 3, 2, 1, 3, 3, 3, 1, 5, 1,
|
2, 3, 2, 1, 3, 3, 5, 3, 1, 5,
|
||||||
3, 2, 3, 3, 2, 1, 3
|
1, 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
|
||||||
|
@ -374,43 +375,43 @@ 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, 44, 0,
|
19, 3, 0, 5, 6, 32, 33, 0, 45, 0,
|
||||||
45, 0, 1, 0, 13, 11, 0, 0, 28, 0,
|
46, 0, 1, 0, 13, 11, 0, 0, 28, 0,
|
||||||
37, 39, 0, 7, 16, 17, 0, 5, 31, 0,
|
38, 40, 0, 7, 16, 0, 17, 0, 0, 5,
|
||||||
11, 43, 0, 10, 27, 0, 11, 15, 14, 26,
|
31, 0, 11, 44, 0, 15, 0, 10, 27, 0,
|
||||||
30, 35, 41, 9, 34, 42, 46, 0, 36, 29,
|
11, 14, 26, 30, 35, 42, 9, 34, 43, 47,
|
||||||
40, 11, 38
|
0, 0, 37, 29, 41, 36, 11, 39
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYDEFGOTO[NTERM-NUM]. */
|
/* YYDEFGOTO[NTERM-NUM]. */
|
||||||
static const yysigned_char yydefgoto[] =
|
static const yysigned_char yydefgoto[] =
|
||||||
{
|
{
|
||||||
-1, 7, 53, 54, 22, 59, 60, 23, 24, 10,
|
-1, 7, 57, 58, 22, 62, 56, 23, 24, 10,
|
||||||
38, 39, 11, 27, 12, 40, 41, 42, 30, 13,
|
38, 39, 11, 27, 12, 40, 41, 42, 30, 13,
|
||||||
31
|
31
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 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 -49
|
#define YYPACT_NINF -45
|
||||||
static const yysigned_char yypact[] =
|
static const short yypact[] =
|
||||||
{
|
{
|
||||||
7, 113, -49, 97, -49, 80, 52, 15, 68, -49,
|
156, 167, -45, 121, -45, 104, 76, 19, 92, -45,
|
||||||
-49, -49, -49, -49, -49, 97, -49, 104, 88, -49,
|
-45, -45, -45, -45, -45, 121, -45, 151, 111, -45,
|
||||||
-49, -49, 24, -49, -49, -49, -49, 19, -49, 4,
|
-45, -45, 56, -45, -45, -45, -45, 8, -45, 9,
|
||||||
-49, 28, -49, 88, -49, 97, 97, 6, -49, 32,
|
-45, -3, -45, 39, -45, 121, 121, 12, -45, 18,
|
||||||
-49, -49, 32, -49, -49, -49, 26, 6, -49, 97,
|
-45, -45, 18, -45, -45, 111, -45, 136, 22, 12,
|
||||||
97, -49, 97, -49, -49, 30, 97, -49, -49, -49,
|
-45, 121, 121, -45, 121, -45, 83, -45, -45, 24,
|
||||||
39, -49, 59, -49, -49, -49, -49, 47, -49, -49,
|
121, -45, -45, 26, -45, 83, -45, -45, -45, -45,
|
||||||
-49, 97, -49
|
18, 23, -45, -45, -45, -45, 121, -45
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYPGOTO[NTERM-NUM]. */
|
/* YYPGOTO[NTERM-NUM]. */
|
||||||
static const yysigned_char yypgoto[] =
|
static const yysigned_char yypgoto[] =
|
||||||
{
|
{
|
||||||
-49, -49, -2, -48, 5, -35, 37, -8, 51, -49,
|
-45, -45, -2, -44, 6, -27, -37, -8, 11, -45,
|
||||||
10, -49, -49, -49, -49, -49, 16, -49, 25, -49,
|
-22, -45, -45, -45, -45, -45, -23, -6, 0, -45,
|
||||||
-49
|
-45
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
||||||
|
@ -420,38 +421,48 @@ 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, 65, 26, 29, 8, 8, 61, 68, 44,
|
37, 21, 63, 26, 29, 65, 8, 8, 68, 44,
|
||||||
45, 63, 1, 43, 47, 32, 2, 3, 4, 50,
|
46, 9, 14, 43, 49, 64, 72, 53, 54, 32,
|
||||||
46, 56, 8, 72, 5, 44, 6, 15, 16, 17,
|
48, 66, 71, 8, 52, 44, 50, 60, 14, 51,
|
||||||
18, 19, 20, 2, 55, 4, 34, 48, 35, 58,
|
55, 61, 77, 65, 59, 61, 55, 44, 76, 44,
|
||||||
49, 5, 57, 6, 57, 58, 36, 64, 51, 52,
|
35, 73, 74, 75, 45, 18, 19, 20, 37, 67,
|
||||||
29, 9, 14, 35, 37, 15, 16, 17, 18, 19,
|
70, 55, 29, 8, 69, 0, 0, 37, 14, 15,
|
||||||
20, 2, 71, 4, 33, 18, 19, 20, 14, 5,
|
16, 47, 18, 19, 20, 2, 0, 4, 34, 0,
|
||||||
69, 6, 28, 33, 18, 19, 20, 66, 70, 62,
|
35, 0, 0, 5, 0, 6, 0, 0, 36, 15,
|
||||||
34, 36, 35, 15, 16, 17, 18, 19, 20, 2,
|
16, 17, 18, 19, 20, 2, 0, 4, 45, 18,
|
||||||
36, 4, 67, 33, 18, 19, 20, 5, 25, 6,
|
19, 20, 0, 5, 0, 6, 28, 33, 18, 19,
|
||||||
15, 16, 17, 18, 19, 20, 2, 0, 4, 17,
|
20, 0, 0, 0, 34, 36, 35, 15, 16, 17,
|
||||||
18, 19, 20, 2, 5, 4, 6, 0, 1, 0,
|
18, 19, 20, 2, 36, 4, 45, 18, 19, 20,
|
||||||
0, 5, 2, 6, 4, 0, 0, 0, 0, 0,
|
0, 5, 25, 6, 15, 16, 17, 18, 19, 20,
|
||||||
5, 0, 6
|
2, 0, 4, 0, 0, 0, 0, 0, 5, 0,
|
||||||
|
6, 17, 18, 19, 20, 2, 0, 4, 55, 0,
|
||||||
|
0, 0, 0, 5, 0, 6, 17, 18, 19, 20,
|
||||||
|
2, 1, 4, 0, 0, 2, 3, 4, 5, 0,
|
||||||
|
6, 0, 1, 5, 0, 6, 2, 0, 4, 0,
|
||||||
|
0, 0, 0, 0, 5, 0, 6
|
||||||
};
|
};
|
||||||
|
|
||||||
static const yysigned_char yycheck[] =
|
static const yysigned_char yycheck[] =
|
||||||
{
|
{
|
||||||
8, 3, 50, 5, 6, 0, 1, 42, 56, 17,
|
8, 3, 39, 5, 6, 42, 0, 1, 52, 17,
|
||||||
18, 46, 5, 15, 22, 0, 9, 10, 11, 15,
|
18, 0, 1, 15, 22, 42, 60, 20, 21, 0,
|
||||||
22, 15, 17, 71, 17, 33, 19, 3, 4, 5,
|
22, 48, 59, 17, 15, 33, 18, 15, 17, 21,
|
||||||
6, 7, 8, 9, 36, 11, 12, 18, 14, 13,
|
12, 13, 76, 70, 36, 13, 12, 45, 15, 47,
|
||||||
21, 17, 12, 19, 12, 13, 22, 49, 20, 21,
|
14, 63, 65, 70, 5, 6, 7, 8, 56, 51,
|
||||||
52, 0, 1, 14, 62, 3, 4, 5, 6, 7,
|
56, 12, 54, 47, 54, -1, -1, 65, 47, 3,
|
||||||
8, 9, 15, 11, 5, 6, 7, 8, 17, 17,
|
4, 5, 6, 7, 8, 9, -1, 11, 12, -1,
|
||||||
60, 19, 20, 5, 6, 7, 8, 52, 62, 42,
|
14, -1, -1, 17, -1, 19, -1, -1, 22, 3,
|
||||||
12, 22, 14, 3, 4, 5, 6, 7, 8, 9,
|
4, 5, 6, 7, 8, 9, -1, 11, 5, 6,
|
||||||
22, 11, 55, 5, 6, 7, 8, 17, 18, 19,
|
7, 8, -1, 17, -1, 19, 20, 5, 6, 7,
|
||||||
3, 4, 5, 6, 7, 8, 9, -1, 11, 5,
|
8, -1, -1, -1, 12, 22, 14, 3, 4, 5,
|
||||||
6, 7, 8, 9, 17, 11, 19, -1, 5, -1,
|
6, 7, 8, 9, 22, 11, 5, 6, 7, 8,
|
||||||
-1, 17, 9, 19, 11, -1, -1, -1, -1, -1,
|
-1, 17, 18, 19, 3, 4, 5, 6, 7, 8,
|
||||||
17, -1, 19
|
9, -1, 11, -1, -1, -1, -1, -1, 17, -1,
|
||||||
|
19, 5, 6, 7, 8, 9, -1, 11, 12, -1,
|
||||||
|
-1, -1, -1, 17, -1, 19, 5, 6, 7, 8,
|
||||||
|
9, 5, 11, -1, -1, 9, 10, 11, 17, -1,
|
||||||
|
19, -1, 5, 17, -1, 19, 9, -1, 11, -1,
|
||||||
|
-1, -1, -1, -1, 17, -1, 19
|
||||||
};
|
};
|
||||||
|
|
||||||
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
||||||
|
@ -462,10 +473,10 @@ static const unsigned char yystos[] =
|
||||||
32, 35, 37, 42, 31, 3, 4, 5, 6, 7,
|
32, 35, 37, 42, 31, 3, 4, 5, 6, 7,
|
||||||
8, 25, 27, 30, 31, 18, 25, 36, 20, 25,
|
8, 25, 27, 30, 31, 18, 25, 36, 20, 25,
|
||||||
41, 43, 0, 5, 12, 14, 22, 30, 33, 34,
|
41, 43, 0, 5, 12, 14, 22, 30, 33, 34,
|
||||||
38, 39, 40, 25, 30, 30, 25, 30, 18, 21,
|
38, 39, 40, 25, 30, 5, 30, 5, 25, 30,
|
||||||
15, 20, 21, 25, 26, 25, 15, 12, 13, 28,
|
18, 21, 15, 20, 21, 12, 29, 25, 26, 25,
|
||||||
29, 28, 29, 28, 25, 26, 41, 29, 26, 33,
|
15, 13, 28, 29, 28, 29, 28, 25, 26, 41,
|
||||||
39, 15, 26
|
40, 29, 26, 33, 39, 28, 15, 26
|
||||||
};
|
};
|
||||||
|
|
||||||
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
|
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
|
||||||
|
@ -1202,7 +1213,15 @@ yyreduce:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 36:
|
case 36:
|
||||||
#line 226 "gram.y"
|
#line 224 "gram.y"
|
||||||
|
{
|
||||||
|
syck_add_transfer( yyvsp[-3].name, yyvsp[-1].nodeData, ((SyckParser *)parser)->taguri_expansion );
|
||||||
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 37:
|
||||||
|
#line 231 "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 ),
|
||||||
|
@ -1210,8 +1229,8 @@ yyreduce:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 38:
|
case 39:
|
||||||
#line 242 "gram.y"
|
#line 247 "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 ),
|
||||||
|
@ -1219,23 +1238,23 @@ yyreduce:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 40:
|
case 41:
|
||||||
#line 251 "gram.y"
|
#line 256 "gram.y"
|
||||||
{
|
{
|
||||||
syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
|
syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
|
||||||
yyval.nodeData = yyvsp[-2].nodeData;
|
yyval.nodeData = yyvsp[-2].nodeData;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 41:
|
case 42:
|
||||||
#line 256 "gram.y"
|
#line 261 "gram.y"
|
||||||
{
|
{
|
||||||
yyval.nodeData = yyvsp[-1].nodeData;
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 42:
|
case 43:
|
||||||
#line 265 "gram.y"
|
#line 270 "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 ),
|
||||||
|
@ -1243,22 +1262,22 @@ yyreduce:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 43:
|
case 44:
|
||||||
#line 273 "gram.y"
|
#line 278 "gram.y"
|
||||||
{
|
{
|
||||||
yyval.nodeData = yyvsp[-1].nodeData;
|
yyval.nodeData = yyvsp[-1].nodeData;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 44:
|
case 45:
|
||||||
#line 277 "gram.y"
|
#line 282 "gram.y"
|
||||||
{
|
{
|
||||||
yyval.nodeData = syck_alloc_map();
|
yyval.nodeData = syck_alloc_map();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 46:
|
case 47:
|
||||||
#line 284 "gram.y"
|
#line 289 "gram.y"
|
||||||
{
|
{
|
||||||
syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
|
syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
|
||||||
yyval.nodeData = yyvsp[-2].nodeData;
|
yyval.nodeData = yyvsp[-2].nodeData;
|
||||||
|
@ -1269,7 +1288,7 @@ yyreduce:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Line 1016 of /usr/local/share/bison/yacc.c. */
|
/* Line 1016 of /usr/local/share/bison/yacc.c. */
|
||||||
#line 1273 "y.tab.c"
|
#line 1292 "y.tab.c"
|
||||||
|
|
||||||
yyvsp -= yylen;
|
yyvsp -= yylen;
|
||||||
yyssp -= yylen;
|
yyssp -= yylen;
|
||||||
|
@ -1488,7 +1507,7 @@ yyreturn:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#line 290 "gram.y"
|
#line 295 "gram.y"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
//
|
/*
|
||||||
// handler.h
|
* handler.h
|
||||||
//
|
*
|
||||||
// $Author$
|
* $Author$
|
||||||
// $Date$
|
* $Date$
|
||||||
//
|
*
|
||||||
// Copyright (C) 2003 why the lucky stiff
|
* Copyright (C) 2003 why the lucky stiff
|
||||||
//
|
*/
|
||||||
|
|
||||||
#include "syck.h"
|
#include "syck.h"
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
/* Generated by re2c 0.5 on Sat May 10 19:43:22 2003 */
|
/* Generated by re2c 0.5 on Sun May 11 19:35:35 2003 */
|
||||||
#line 1 "implicit.re"
|
#line 1 "implicit.re"
|
||||||
//
|
/*
|
||||||
// implicit.re
|
* implicit.re
|
||||||
//
|
*
|
||||||
// $Author$
|
* $Author$
|
||||||
// $Date$
|
* $Date$
|
||||||
//
|
*
|
||||||
// Copyright (C) 2003 why the lucky stiff
|
* Copyright (C) 2003 why the lucky stiff
|
||||||
//
|
*/
|
||||||
|
|
||||||
#include "syck.h"
|
#include "syck.h"
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
//
|
/*
|
||||||
// node.c
|
* node.c
|
||||||
//
|
*
|
||||||
// $Author$
|
* $Author$
|
||||||
// $Date$
|
* $Date$
|
||||||
//
|
*
|
||||||
// Copyright (C) 2003 why the lucky stiff
|
* Copyright (C) 2003 why the lucky stiff
|
||||||
//
|
*/
|
||||||
|
|
||||||
#include "syck.h"
|
#include "syck.h"
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Node allocation functions
|
* Node allocation functions
|
||||||
//
|
*/
|
||||||
SyckNode *
|
SyckNode *
|
||||||
syck_alloc_node( enum syck_kind_tag type )
|
syck_alloc_node( enum syck_kind_tag type )
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ syck_alloc_node( enum syck_kind_tag type )
|
||||||
|
|
||||||
s = S_ALLOC( SyckNode );
|
s = S_ALLOC( SyckNode );
|
||||||
s->kind = type;
|
s->kind = type;
|
||||||
s->id = NULL;
|
s->id = 0;
|
||||||
s->type_id = NULL;
|
s->type_id = NULL;
|
||||||
s->anchor = NULL;
|
s->anchor = NULL;
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
//
|
/*
|
||||||
// rubyext.c
|
* rubyext.c
|
||||||
//
|
*
|
||||||
// $Author$
|
* $Author$
|
||||||
// $Date$
|
* $Date$
|
||||||
//
|
*
|
||||||
// Copyright (C) 2003 why the lucky stiff
|
* Copyright (C) 2003 why the lucky stiff
|
||||||
//
|
*/
|
||||||
|
|
||||||
#include "ruby.h"
|
#include "ruby.h"
|
||||||
#include "syck.h"
|
#include "syck.h"
|
||||||
|
@ -19,9 +19,9 @@ static VALUE sym_model, sym_generic;
|
||||||
static VALUE sym_scalar, sym_seq, sym_map;
|
static VALUE sym_scalar, sym_seq, sym_map;
|
||||||
VALUE cParser, cLoader, cNode, oDefaultLoader;
|
VALUE cParser, cLoader, cNode, oDefaultLoader;
|
||||||
|
|
||||||
//
|
/*
|
||||||
// my private collection of numerical oddities.
|
* my private collection of numerical oddities.
|
||||||
//
|
*/
|
||||||
static double S_zero() { return 0.0; }
|
static double S_zero() { return 0.0; }
|
||||||
static double S_one() { return 1.0; }
|
static double S_one() { return 1.0; }
|
||||||
static double S_inf() { return S_one() / S_zero(); }
|
static double S_inf() { return S_one() / S_zero(); }
|
||||||
|
@ -29,9 +29,9 @@ static double S_nan() { return S_zero() / S_zero(); }
|
||||||
|
|
||||||
static VALUE syck_node_transform( VALUE );
|
static VALUE syck_node_transform( VALUE );
|
||||||
|
|
||||||
//
|
/*
|
||||||
// read from io.
|
* read from io.
|
||||||
//
|
*/
|
||||||
long
|
long
|
||||||
rb_syck_io_str_read( char *buf, SyckIoStr *str, long max_size, long skip )
|
rb_syck_io_str_read( char *buf, SyckIoStr *str, long max_size, long skip )
|
||||||
{
|
{
|
||||||
|
@ -60,9 +60,9 @@ rb_syck_io_str_read( char *buf, SyckIoStr *str, long max_size, long skip )
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// determine: are we reading from a string or io?
|
* determine: are we reading from a string or io?
|
||||||
//
|
*/
|
||||||
void
|
void
|
||||||
syck_parser_assign_io(parser, port)
|
syck_parser_assign_io(parser, port)
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
|
@ -85,9 +85,9 @@ syck_parser_assign_io(parser, port)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Get value in hash by key, forcing an empty hash if nil.
|
* Get value in hash by key, forcing an empty hash if nil.
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_get_hash_aref(hsh, key)
|
syck_get_hash_aref(hsh, key)
|
||||||
VALUE hsh, key;
|
VALUE hsh, key;
|
||||||
|
@ -101,9 +101,9 @@ syck_get_hash_aref(hsh, key)
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// creating timestamps
|
* creating timestamps
|
||||||
//
|
*/
|
||||||
SYMID
|
SYMID
|
||||||
rb_syck_mktime(str)
|
rb_syck_mktime(str)
|
||||||
char *str;
|
char *str;
|
||||||
|
@ -145,10 +145,10 @@ rb_syck_mktime(str)
|
||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// {generic mode} node handler
|
* {generic mode} node handler
|
||||||
// - Loads data into Node classes
|
* - Loads data into Node classes
|
||||||
//
|
*/
|
||||||
SYMID
|
SYMID
|
||||||
rb_syck_parse_handler(p, n)
|
rb_syck_parse_handler(p, n)
|
||||||
SyckParser *p;
|
SyckParser *p;
|
||||||
|
@ -204,10 +204,10 @@ rb_syck_parse_handler(p, n)
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// {native mode} node handler
|
* {native mode} node handler
|
||||||
// - Converts data into native Ruby types
|
* - Converts data into native Ruby types
|
||||||
//
|
*/
|
||||||
SYMID
|
SYMID
|
||||||
rb_syck_load_handler(p, n)
|
rb_syck_load_handler(p, n)
|
||||||
SyckParser *p;
|
SyckParser *p;
|
||||||
|
@ -327,9 +327,9 @@ rb_syck_load_handler(p, n)
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// friendly errors.
|
* friendly errors.
|
||||||
//
|
*/
|
||||||
void
|
void
|
||||||
rb_syck_err_handler(p, msg)
|
rb_syck_err_handler(p, msg)
|
||||||
SyckParser *p;
|
SyckParser *p;
|
||||||
|
@ -348,9 +348,9 @@ rb_syck_err_handler(p, msg)
|
||||||
p->lineptr);
|
p->lineptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// data loaded based on the model requested.
|
* data loaded based on the model requested.
|
||||||
//
|
*/
|
||||||
void
|
void
|
||||||
syck_set_model( parser, model )
|
syck_set_model( parser, model )
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
|
@ -372,9 +372,9 @@ syck_set_model( parser, model )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// wrap syck_parse().
|
* wrap syck_parse().
|
||||||
//
|
*/
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_run_syck_parse(parser)
|
rb_run_syck_parse(parser)
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
|
@ -382,9 +382,9 @@ rb_run_syck_parse(parser)
|
||||||
return syck_parse(parser);
|
return syck_parse(parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// free parser.
|
* free parser.
|
||||||
//
|
*/
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_syck_ensure(parser)
|
rb_syck_ensure(parser)
|
||||||
SyckParser *parser;
|
SyckParser *parser;
|
||||||
|
@ -393,9 +393,9 @@ rb_syck_ensure(parser)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Parser.new
|
* YAML::Syck::Parser.new
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_parser_new(argc, argv, class)
|
syck_parser_new(argc, argv, class)
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -417,9 +417,9 @@ syck_parser_new(argc, argv, class)
|
||||||
return pobj;
|
return pobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Parser.initialize( options )
|
* YAML::Syck::Parser.initialize( options )
|
||||||
//
|
*/
|
||||||
static VALUE
|
static VALUE
|
||||||
syck_parser_initialize( self, options )
|
syck_parser_initialize( self, options )
|
||||||
VALUE self, options;
|
VALUE self, options;
|
||||||
|
@ -428,9 +428,9 @@ syck_parser_initialize( self, options )
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Parser.load( IO or String )
|
* YAML::Syck::Parser.load( IO or String )
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_parser_load(argc, argv, self)
|
syck_parser_load(argc, argv, self)
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -454,7 +454,7 @@ syck_parser_load(argc, argv, self)
|
||||||
}
|
}
|
||||||
|
|
||||||
v = syck_parse( parser );
|
v = syck_parse( parser );
|
||||||
if ( v == NULL )
|
if ( v == 0 )
|
||||||
{
|
{
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
@ -464,9 +464,9 @@ syck_parser_load(argc, argv, self)
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Parser.load_documents( IO or String ) { |doc| }
|
* YAML::Syck::Parser.load_documents( IO or String ) { |doc| }
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_parser_load_documents(argc, argv, self)
|
syck_parser_load_documents(argc, argv, self)
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -497,9 +497,9 @@ syck_parser_load_documents(argc, argv, self)
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Loader.initialize
|
* YAML::Syck::Loader.initialize
|
||||||
//
|
*/
|
||||||
static VALUE
|
static VALUE
|
||||||
syck_loader_initialize( self )
|
syck_loader_initialize( self )
|
||||||
VALUE self;
|
VALUE self;
|
||||||
|
@ -516,9 +516,9 @@ syck_loader_initialize( self )
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Add type family, used by add_*_type methods.
|
* Add type family, used by add_*_type methods.
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_loader_add_type_family( self, domain, type_re, proc )
|
syck_loader_add_type_family( self, domain, type_re, proc )
|
||||||
VALUE self, domain, type_re, proc;
|
VALUE self, domain, type_re, proc;
|
||||||
|
@ -528,11 +528,12 @@ syck_loader_add_type_family( self, domain, type_re, proc )
|
||||||
families = rb_iv_get(self, "@families");
|
families = rb_iv_get(self, "@families");
|
||||||
domain_types = syck_get_hash_aref(families, domain);
|
domain_types = syck_get_hash_aref(families, domain);
|
||||||
rb_hash_aset( domain_types, type_re, proc );
|
rb_hash_aset( domain_types, type_re, proc );
|
||||||
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Loader.add_domain_type
|
* YAML::Syck::Loader.add_domain_type
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_loader_add_domain_type( argc, argv, self )
|
syck_loader_add_domain_type( argc, argv, self )
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -543,12 +544,13 @@ syck_loader_add_domain_type( argc, argv, self )
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "2&", &domain, &type_re, &proc);
|
rb_scan_args(argc, argv, "2&", &domain, &type_re, &proc);
|
||||||
syck_loader_add_type_family( self, domain, type_re, proc );
|
syck_loader_add_type_family( self, domain, type_re, proc );
|
||||||
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Loader.add_builtin_type
|
* YAML::Syck::Loader.add_builtin_type
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_loader_add_builtin_type( argc, argv, self )
|
syck_loader_add_builtin_type( argc, argv, self )
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -559,11 +561,12 @@ syck_loader_add_builtin_type( argc, argv, self )
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "1&", &type_re, &proc);
|
rb_scan_args(argc, argv, "1&", &type_re, &proc);
|
||||||
syck_loader_add_type_family( self, rb_str_new2( YAML_DOMAIN ), type_re, proc );
|
syck_loader_add_type_family( self, rb_str_new2( YAML_DOMAIN ), type_re, proc );
|
||||||
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Loader.add_ruby_type
|
* YAML::Syck::Loader.add_ruby_type
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_loader_add_ruby_type( argc, argv, self )
|
syck_loader_add_ruby_type( argc, argv, self )
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -574,11 +577,12 @@ syck_loader_add_ruby_type( argc, argv, self )
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "1&", &type_re, &proc);
|
rb_scan_args(argc, argv, "1&", &type_re, &proc);
|
||||||
syck_loader_add_type_family( self, rb_str_new2( RUBY_DOMAIN ), type_re, proc );
|
syck_loader_add_type_family( self, rb_str_new2( RUBY_DOMAIN ), type_re, proc );
|
||||||
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Loader.add_private_type
|
* YAML::Syck::Loader.add_private_type
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_loader_add_private_type( argc, argv, self )
|
syck_loader_add_private_type( argc, argv, self )
|
||||||
int argc;
|
int argc;
|
||||||
|
@ -591,11 +595,30 @@ syck_loader_add_private_type( argc, argv, self )
|
||||||
|
|
||||||
priv_types = rb_iv_get(self, "@private_types");
|
priv_types = rb_iv_get(self, "@private_types");
|
||||||
rb_hash_aset( priv_types, type_re, proc );
|
rb_hash_aset( priv_types, type_re, proc );
|
||||||
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// iterator to search a type hash for a match.
|
* YAML::Syck::Loader#detect
|
||||||
//
|
*/
|
||||||
|
VALUE
|
||||||
|
syck_loader_detect_implicit( self, val )
|
||||||
|
VALUE self, val;
|
||||||
|
{
|
||||||
|
char *type_id;
|
||||||
|
|
||||||
|
if ( TYPE(val) == T_STRING )
|
||||||
|
{
|
||||||
|
type_id = syck_match_implicit( RSTRING(val)->ptr, RSTRING(val)->len );
|
||||||
|
return rb_str_new2( type_id );
|
||||||
|
}
|
||||||
|
|
||||||
|
return rb_str_new2( "" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* iterator to search a type hash for a match.
|
||||||
|
*/
|
||||||
static VALUE
|
static VALUE
|
||||||
transfer_find_i(entry, col)
|
transfer_find_i(entry, col)
|
||||||
VALUE entry, col;
|
VALUE entry, col;
|
||||||
|
@ -611,9 +634,9 @@ transfer_find_i(entry, col)
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Loader#transfer
|
* YAML::Syck::Loader#transfer
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_loader_transfer( self, type, val )
|
syck_loader_transfer( self, type, val )
|
||||||
VALUE self, type, val;
|
VALUE self, type, val;
|
||||||
|
@ -689,15 +712,16 @@ syck_loader_transfer( self, type, val )
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Node.initialize
|
* YAML::Syck::Node.initialize
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_node_initialize( self, type_id, val )
|
syck_node_initialize( self, type_id, val )
|
||||||
VALUE self, type_id, val;
|
VALUE self, type_id, val;
|
||||||
{
|
{
|
||||||
rb_iv_set( self, "@type_id", type_id );
|
rb_iv_set( self, "@type_id", type_id );
|
||||||
rb_iv_set( self, "@value", val );
|
rb_iv_set( self, "@value", val );
|
||||||
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
|
@ -708,6 +732,7 @@ syck_node_thash( entry, t )
|
||||||
key = rb_ary_entry( entry, 0 );
|
key = rb_ary_entry( entry, 0 );
|
||||||
val = syck_node_transform( rb_ary_entry( rb_ary_entry( entry, 1 ), 1 ) );
|
val = syck_node_transform( rb_ary_entry( rb_ary_entry( entry, 1 ), 1 ) );
|
||||||
rb_hash_aset( t, key, val );
|
rb_hash_aset( t, key, val );
|
||||||
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
VALUE
|
||||||
|
@ -716,11 +741,12 @@ syck_node_ahash( entry, t )
|
||||||
{
|
{
|
||||||
VALUE val = syck_node_transform( entry );
|
VALUE val = syck_node_transform( entry );
|
||||||
rb_ary_push( t, val );
|
rb_ary_push( t, val );
|
||||||
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// YAML::Syck::Node.transform
|
* YAML::Syck::Node.transform
|
||||||
//
|
*/
|
||||||
VALUE
|
VALUE
|
||||||
syck_node_transform( self )
|
syck_node_transform( self )
|
||||||
VALUE self;
|
VALUE self;
|
||||||
|
@ -745,9 +771,9 @@ syck_node_transform( self )
|
||||||
return rb_funcall( oDefaultLoader, rb_intern( "transfer" ), 2, type_id, t );
|
return rb_funcall( oDefaultLoader, rb_intern( "transfer" ), 2, type_id, t );
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Initialize Syck extension
|
* Initialize Syck extension
|
||||||
//
|
*/
|
||||||
void
|
void
|
||||||
Init_syck()
|
Init_syck()
|
||||||
{
|
{
|
||||||
|
@ -778,6 +804,7 @@ Init_syck()
|
||||||
rb_define_method( cLoader, "add_builtin_type", syck_loader_add_builtin_type, -1 );
|
rb_define_method( cLoader, "add_builtin_type", syck_loader_add_builtin_type, -1 );
|
||||||
rb_define_method( cLoader, "add_ruby_type", syck_loader_add_ruby_type, -1 );
|
rb_define_method( cLoader, "add_ruby_type", syck_loader_add_ruby_type, -1 );
|
||||||
rb_define_method( cLoader, "add_private_type", syck_loader_add_private_type, -1 );
|
rb_define_method( cLoader, "add_private_type", syck_loader_add_private_type, -1 );
|
||||||
|
rb_define_method( cLoader, "detect_implicit", syck_loader_detect_implicit, 1 );
|
||||||
rb_define_method( cLoader, "transfer", syck_loader_transfer, 2 );
|
rb_define_method( cLoader, "transfer", syck_loader_transfer, 2 );
|
||||||
|
|
||||||
oDefaultLoader = rb_funcall( cLoader, rb_intern( "new" ), 0 );
|
oDefaultLoader = rb_funcall( cLoader, rb_intern( "new" ), 0 );
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
//
|
/*
|
||||||
// syck.c
|
* syck.c
|
||||||
//
|
*
|
||||||
// $Author$
|
* $Author$
|
||||||
// $Date$
|
* $Date$
|
||||||
//
|
*
|
||||||
// Copyright (C) 2003 why the lucky stiff
|
* Copyright (C) 2003 why the lucky stiff
|
||||||
//
|
*/
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -15,9 +15,9 @@
|
||||||
#define SYCK_YAML_MINOR 0
|
#define SYCK_YAML_MINOR 0
|
||||||
#define SYCK_BUFFERSIZE 262144
|
#define SYCK_BUFFERSIZE 262144
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Custom assert
|
* Custom assert
|
||||||
//
|
*/
|
||||||
void
|
void
|
||||||
syck_assert( char *file_name, unsigned line_num )
|
syck_assert( char *file_name, unsigned line_num )
|
||||||
{
|
{
|
||||||
|
@ -36,9 +36,9 @@ syck_strndup( char *buf, long len )
|
||||||
S_MEMCPY( new, buf, char, len );
|
S_MEMCPY( new, buf, char, len );
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Default IO functions
|
* Default IO functions
|
||||||
//
|
*/
|
||||||
long
|
long
|
||||||
syck_io_file_read( char *buf, SyckIoFile *file, long max_size, long skip )
|
syck_io_file_read( char *buf, SyckIoFile *file, long max_size, long skip )
|
||||||
{
|
{
|
||||||
|
@ -109,7 +109,7 @@ syck_parser_reset_levels( SyckParser *p )
|
||||||
{
|
{
|
||||||
p->lvl_idx = 1;
|
p->lvl_idx = 1;
|
||||||
p->levels[0].spaces = -1;
|
p->levels[0].spaces = -1;
|
||||||
p->levels[0].domain = ""; // YAML_DOMAIN + "/";
|
p->levels[0].domain = syck_strndup( "", 1 ); // YAML_DOMAIN + "/";
|
||||||
p->levels[0].status = syck_lvl_header;
|
p->levels[0].status = syck_lvl_header;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,9 +135,9 @@ syck_parser_reset_cursor( SyckParser *p )
|
||||||
p->force_token = 0;
|
p->force_token = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Allocate the parser
|
* Allocate the parser
|
||||||
//
|
*/
|
||||||
SyckParser *
|
SyckParser *
|
||||||
syck_new_parser()
|
syck_new_parser()
|
||||||
{
|
{
|
||||||
|
@ -303,10 +303,7 @@ syck_parser_pop_level( SyckParser *p )
|
||||||
if ( p->lvl_idx <= 1 ) return;
|
if ( p->lvl_idx <= 1 ) return;
|
||||||
|
|
||||||
p->lvl_idx -= 1;
|
p->lvl_idx -= 1;
|
||||||
if ( p->levels[p->lvl_idx - 1].domain != p->levels[p->lvl_idx].domain )
|
|
||||||
{
|
|
||||||
free( p->levels[p->lvl_idx].domain );
|
free( p->levels[p->lvl_idx].domain );
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -321,7 +318,7 @@ syck_parser_add_level( SyckParser *p, int len, enum syck_level_status status )
|
||||||
|
|
||||||
ASSERT( len > p->levels[p->lvl_idx-1].spaces );
|
ASSERT( len > p->levels[p->lvl_idx-1].spaces );
|
||||||
p->levels[p->lvl_idx].spaces = len;
|
p->levels[p->lvl_idx].spaces = len;
|
||||||
p->levels[p->lvl_idx].domain = p->levels[p->lvl_idx-1].domain;
|
p->levels[p->lvl_idx].domain = syck_strndup( p->levels[p->lvl_idx-1].domain, strlen( p->levels[p->lvl_idx-1].domain ) );
|
||||||
p->levels[p->lvl_idx].status = status;
|
p->levels[p->lvl_idx].status = status;
|
||||||
p->lvl_idx += 1;
|
p->lvl_idx += 1;
|
||||||
}
|
}
|
||||||
|
@ -443,7 +440,7 @@ syck_parse( SyckParser *p )
|
||||||
|
|
||||||
ASSERT( p != NULL );
|
ASSERT( p != NULL );
|
||||||
|
|
||||||
p->root = NULL;
|
p->root = 0;
|
||||||
syck_parser_reset_levels( p );
|
syck_parser_reset_levels( p );
|
||||||
yyparse( p );
|
yyparse( p );
|
||||||
return p->root;
|
return p->root;
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
//
|
/*
|
||||||
// syck.h
|
* syck.h
|
||||||
//
|
*
|
||||||
// $Author$
|
* $Author$
|
||||||
// $Date$
|
* $Date$
|
||||||
//
|
*
|
||||||
// Copyright (C) 2003 why the lucky stiff
|
* Copyright (C) 2003 why the lucky stiff
|
||||||
//
|
*/
|
||||||
|
|
||||||
#ifndef SYCK_H
|
#ifndef SYCK_H
|
||||||
#define SYCK_H
|
#define SYCK_H
|
||||||
|
@ -24,9 +24,9 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Memory Allocation
|
* Memory Allocation
|
||||||
//
|
*/
|
||||||
#if defined(HAVE_ALLOCA_H) && !defined(__GNUC__)
|
#if defined(HAVE_ALLOCA_H) && !defined(__GNUC__)
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -65,9 +65,9 @@ extern "C" {
|
||||||
#define NL_CHOMP 130
|
#define NL_CHOMP 130
|
||||||
#define NL_KEEP 140
|
#define NL_KEEP 140
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Node definitions
|
* Node definitions
|
||||||
//
|
*/
|
||||||
#define SYMID unsigned long
|
#define SYMID unsigned long
|
||||||
|
|
||||||
typedef struct _syck_parser SyckParser;
|
typedef struct _syck_parser SyckParser;
|
||||||
|
@ -118,9 +118,9 @@ struct _syck_node {
|
||||||
} data;
|
} data;
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Parser definitions
|
* Parser definitions
|
||||||
//
|
*/
|
||||||
typedef SYMID (*SyckNodeHandler)(SyckParser *, SyckNode *);
|
typedef SYMID (*SyckNodeHandler)(SyckParser *, SyckNode *);
|
||||||
typedef void (*SyckErrorHandler)(SyckParser *, char *);
|
typedef void (*SyckErrorHandler)(SyckParser *, char *);
|
||||||
typedef long (*SyckIoFileRead)(char *, SyckIoFile *, long, long);
|
typedef long (*SyckIoFileRead)(char *, SyckIoFile *, long, long);
|
||||||
|
@ -135,6 +135,7 @@ enum syck_level_status {
|
||||||
syck_lvl_header,
|
syck_lvl_header,
|
||||||
syck_lvl_doc,
|
syck_lvl_doc,
|
||||||
syck_lvl_seq,
|
syck_lvl_seq,
|
||||||
|
syck_lvl_map,
|
||||||
syck_lvl_block,
|
syck_lvl_block,
|
||||||
syck_lvl_str,
|
syck_lvl_str,
|
||||||
syck_lvl_inline,
|
syck_lvl_inline,
|
||||||
|
@ -190,9 +191,9 @@ struct _syck_parser {
|
||||||
void *bonus;
|
void *bonus;
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Handler prototypes
|
* Handler prototypes
|
||||||
//
|
*/
|
||||||
SYMID syck_hdlr_add_node( SyckParser *, SyckNode * );
|
SYMID syck_hdlr_add_node( SyckParser *, SyckNode * );
|
||||||
SyckNode *syck_hdlr_add_anchor( SyckParser *, char *, SyckNode * );
|
SyckNode *syck_hdlr_add_anchor( SyckParser *, char *, SyckNode * );
|
||||||
SyckNode *syck_hdlr_add_alias( SyckParser *, char * );
|
SyckNode *syck_hdlr_add_alias( SyckParser *, char * );
|
||||||
|
@ -207,9 +208,9 @@ void syck_fold_format( struct SyckStr *, int, int, int );
|
||||||
void try_tag_implicit( SyckNode *, int );
|
void try_tag_implicit( SyckNode *, int );
|
||||||
char *syck_match_implicit( char *, size_t );
|
char *syck_match_implicit( char *, size_t );
|
||||||
|
|
||||||
//
|
/*
|
||||||
// API prototypes
|
* API prototypes
|
||||||
//
|
*/
|
||||||
char *syck_strndup( char *, long );
|
char *syck_strndup( char *, long );
|
||||||
long syck_io_file_read( char *, SyckIoFile *, long, long );
|
long syck_io_file_read( char *, SyckIoFile *, long, long );
|
||||||
long syck_io_str_read( char *, SyckIoStr *, long, long );
|
long syck_io_str_read( char *, SyckIoStr *, long, long );
|
||||||
|
@ -231,9 +232,9 @@ void syck_parser_init( SyckParser *, int );
|
||||||
SYMID syck_parse( SyckParser * );
|
SYMID syck_parse( SyckParser * );
|
||||||
void syck_default_error_handler( SyckParser *, char * );
|
void syck_default_error_handler( SyckParser *, char * );
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Allocation prototypes
|
* Allocation prototypes
|
||||||
//
|
*/
|
||||||
SyckNode *syck_alloc_map();
|
SyckNode *syck_alloc_map();
|
||||||
SyckNode *syck_alloc_seq();
|
SyckNode *syck_alloc_seq();
|
||||||
SyckNode *syck_alloc_str();
|
SyckNode *syck_alloc_str();
|
||||||
|
|
259
ext/syck/token.c
259
ext/syck/token.c
|
@ -1,25 +1,24 @@
|
||||||
/* Generated by re2c 0.5 on Sat May 10 19:31:12 2003 */
|
/* Generated by re2c 0.5 on Tue May 13 00:35:24 2003 */
|
||||||
#line 1 "token.re"
|
#line 1 "token.re"
|
||||||
//
|
/*
|
||||||
// token.re
|
* token.re
|
||||||
//
|
*
|
||||||
// $Author$
|
* $Author$
|
||||||
// $Date$
|
* $Date$
|
||||||
//
|
*
|
||||||
// Copyright (C) 2003 why the lucky stiff
|
* Copyright (C) 2003 why the lucky stiff
|
||||||
//
|
*/
|
||||||
|
|
||||||
#include "syck.h"
|
#include "syck.h"
|
||||||
#include "gram.h"
|
#include "gram.h"
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Allocate quoted strings in chunks
|
* Allocate quoted strings in chunks
|
||||||
//
|
*/
|
||||||
#define QUOTELEN 1024
|
#define QUOTELEN 1024
|
||||||
|
|
||||||
//
|
/*
|
||||||
// They do my bidding...
|
* They do my bidding...
|
||||||
//
|
*/
|
||||||
#define YYCTYPE char
|
#define YYCTYPE char
|
||||||
#define YYCURSOR parser->cursor
|
#define YYCURSOR parser->cursor
|
||||||
#define YYMARKER parser->marker
|
#define YYMARKER parser->marker
|
||||||
|
@ -30,33 +29,33 @@
|
||||||
#define YYLINE parser->linect
|
#define YYLINE parser->linect
|
||||||
#define YYFILL(n) syck_parser_read(parser)
|
#define YYFILL(n) syck_parser_read(parser)
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Repositions the cursor at `n' offset from the token start.
|
* Repositions the cursor at `n' offset from the token start.
|
||||||
// Only works in `Header' and `Document' sections.
|
* Only works in `Header' and `Document' sections.
|
||||||
//
|
*/
|
||||||
#define YYPOS(n) YYCURSOR = YYTOKEN + n
|
#define YYPOS(n) YYCURSOR = YYTOKEN + n
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Track line numbers
|
* Track line numbers
|
||||||
//
|
*/
|
||||||
#define NEWLINE(ptr) YYLINE++; YYLINEPTR = ptr + 1
|
#define NEWLINE(ptr) YYLINE++; YYLINEPTR = ptr + 1
|
||||||
|
|
||||||
//
|
/*
|
||||||
// I like seeing the level operations as macros...
|
* I like seeing the level operations as macros...
|
||||||
//
|
*/
|
||||||
#define ADD_LEVEL(len, status) syck_parser_add_level( parser, len, status )
|
#define ADD_LEVEL(len, status) syck_parser_add_level( parser, len, status )
|
||||||
#define POP_LEVEL() syck_parser_pop_level( parser )
|
#define POP_LEVEL() syck_parser_pop_level( parser )
|
||||||
#define CURRENT_LEVEL() syck_parser_current_level( parser )
|
#define CURRENT_LEVEL() syck_parser_current_level( parser )
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Force a token next time around yylex()
|
* Force a token next time around yylex()
|
||||||
//
|
*/
|
||||||
#define FORCE_NEXT_TOKEN(tok) parser->force_token = tok;
|
#define FORCE_NEXT_TOKEN(tok) parser->force_token = tok;
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Nice little macro to ensure we're IOPENed to the current level.
|
* Nice little macro to ensure we're IOPENed to the current level.
|
||||||
// * Only use this macro in the "Document" section *
|
* * Only use this macro in the "Document" section *
|
||||||
//
|
*/
|
||||||
#define ENSURE_IOPEN(last_lvl, to_len, reset) \
|
#define ENSURE_IOPEN(last_lvl, to_len, reset) \
|
||||||
if ( last_lvl->spaces < to_len ) \
|
if ( last_lvl->spaces < to_len ) \
|
||||||
{ \
|
{ \
|
||||||
|
@ -72,10 +71,10 @@
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Nice little macro to ensure closure of levels.
|
* Nice little macro to ensure closure of levels.
|
||||||
// * Only use this macro in the "Document" section *
|
* * Only use this macro in the "Document" section *
|
||||||
//
|
*/
|
||||||
#define ENSURE_IEND(last_lvl, to_len) \
|
#define ENSURE_IEND(last_lvl, to_len) \
|
||||||
if ( last_lvl->spaces > to_len ) \
|
if ( last_lvl->spaces > to_len ) \
|
||||||
{ \
|
{ \
|
||||||
|
@ -84,10 +83,10 @@
|
||||||
return IEND; \
|
return IEND; \
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Concatenates quoted string items and manages allocation
|
* Concatenates quoted string items and manages allocation
|
||||||
// to the quoted string
|
* to the quoted string
|
||||||
//
|
*/
|
||||||
#define QUOTECAT(s, c, i, l) \
|
#define QUOTECAT(s, c, i, l) \
|
||||||
{ \
|
{ \
|
||||||
if ( i + 1 >= c ) \
|
if ( i + 1 >= c ) \
|
||||||
|
@ -99,10 +98,10 @@
|
||||||
s[i] = '\0'; \
|
s[i] = '\0'; \
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Tags a plain scalar with a transfer method
|
* Tags a plain scalar with a transfer method
|
||||||
// * Use only in "Plain" section *
|
* * Use only in "Plain" section *
|
||||||
//
|
*/
|
||||||
#define RETURN_IMPLICIT(fold) \
|
#define RETURN_IMPLICIT(fold) \
|
||||||
{ \
|
{ \
|
||||||
SyckLevel *i_lvl = CURRENT_LEVEL(); \
|
SyckLevel *i_lvl = CURRENT_LEVEL(); \
|
||||||
|
@ -118,9 +117,9 @@
|
||||||
return PLAIN; \
|
return PLAIN; \
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Handles newlines, calculates indent
|
* Handles newlines, calculates indent
|
||||||
//
|
*/
|
||||||
#define GOBBLE_UP_INDENT( ict, start ) \
|
#define GOBBLE_UP_INDENT( ict, start ) \
|
||||||
char *indent = start; \
|
char *indent = start; \
|
||||||
NEWLINE(indent); \
|
NEWLINE(indent); \
|
||||||
|
@ -142,9 +141,9 @@
|
||||||
ict = YYCURSOR - YYLINEPTR; \
|
ict = YYCURSOR - YYLINEPTR; \
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// If an indent exists at the current level, back up.
|
* If an indent exists at the current level, back up.
|
||||||
//
|
*/
|
||||||
#define GET_TRUE_INDENT(indt_len) \
|
#define GET_TRUE_INDENT(indt_len) \
|
||||||
{ \
|
{ \
|
||||||
SyckLevel *lvl_deep = CURRENT_LEVEL(); \
|
SyckLevel *lvl_deep = CURRENT_LEVEL(); \
|
||||||
|
@ -159,21 +158,21 @@
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Argjh! I hate globals! Here for yyerror() only!
|
* Argjh! I hate globals! Here for yyerror() only!
|
||||||
//
|
*/
|
||||||
SyckParser *syck_parser_ptr = NULL;
|
SyckParser *syck_parser_ptr = NULL;
|
||||||
|
|
||||||
//
|
/*
|
||||||
// Accessory funcs later in this file.
|
* Accessory funcs later in this file.
|
||||||
//
|
*/
|
||||||
void eat_comments( SyckParser * );
|
void eat_comments( SyckParser * );
|
||||||
|
|
||||||
//
|
/*
|
||||||
// My own re-entrant yylex() using re2c.
|
* My own re-entrant yylex() using re2c.
|
||||||
// You really get used to the limited regexp.
|
* You really get used to the limited regexp.
|
||||||
// It's really nice to not rely on backtracking and such.
|
* It's really nice to not rely on backtracking and such.
|
||||||
//
|
*/
|
||||||
int
|
int
|
||||||
yylex( YYSTYPE *yylval, SyckParser *parser )
|
yylex( YYSTYPE *yylval, SyckParser *parser )
|
||||||
{
|
{
|
||||||
|
@ -190,7 +189,7 @@ yylex( YYSTYPE *yylval, SyckParser *parser )
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
#line 206
|
#line 205
|
||||||
|
|
||||||
|
|
||||||
if ( YYLINEPTR != YYCURSOR )
|
if ( YYLINEPTR != YYCURSOR )
|
||||||
|
@ -256,19 +255,19 @@ yy2: yyaccept = 0;
|
||||||
yych = *(YYMARKER = ++YYCURSOR);
|
yych = *(YYMARKER = ++YYCURSOR);
|
||||||
if(yych == '-') goto yy15;
|
if(yych == '-') goto yy15;
|
||||||
yy3:
|
yy3:
|
||||||
#line 247
|
#line 246
|
||||||
{ YYPOS(0);
|
{ YYPOS(0);
|
||||||
goto Document;
|
goto Document;
|
||||||
}
|
}
|
||||||
yy4: yych = *++YYCURSOR;
|
yy4: yych = *++YYCURSOR;
|
||||||
yy5:
|
yy5:
|
||||||
#line 233
|
#line 232
|
||||||
{ eat_comments( parser );
|
{ eat_comments( parser );
|
||||||
goto Header;
|
goto Header;
|
||||||
}
|
}
|
||||||
yy6: yych = *++YYCURSOR;
|
yy6: yych = *++YYCURSOR;
|
||||||
yy7:
|
yy7:
|
||||||
#line 237
|
#line 236
|
||||||
{ SyckLevel *lvl = CURRENT_LEVEL();
|
{ SyckLevel *lvl = CURRENT_LEVEL();
|
||||||
ENSURE_IEND(lvl, -1);
|
ENSURE_IEND(lvl, -1);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -276,7 +275,7 @@ yy7:
|
||||||
yy8: yych = *++YYCURSOR;
|
yy8: yych = *++YYCURSOR;
|
||||||
goto yy12;
|
goto yy12;
|
||||||
yy9:
|
yy9:
|
||||||
#line 242
|
#line 241
|
||||||
{ int indt_len;
|
{ int indt_len;
|
||||||
GOBBLE_UP_INDENT( indt_len, YYTOKEN );
|
GOBBLE_UP_INDENT( indt_len, YYTOKEN );
|
||||||
goto Header;
|
goto Header;
|
||||||
|
@ -308,7 +307,7 @@ yy18: ++YYCURSOR;
|
||||||
yych = *YYCURSOR;
|
yych = *YYCURSOR;
|
||||||
yy19: if(yybm[0+yych] & 128) goto yy18;
|
yy19: if(yybm[0+yych] & 128) goto yy18;
|
||||||
yy20:
|
yy20:
|
||||||
#line 219
|
#line 218
|
||||||
{ SyckLevel *lvl = CURRENT_LEVEL();
|
{ SyckLevel *lvl = CURRENT_LEVEL();
|
||||||
if ( lvl->status == syck_lvl_header )
|
if ( lvl->status == syck_lvl_header )
|
||||||
{
|
{
|
||||||
|
@ -328,7 +327,7 @@ yy21: ++YYCURSOR;
|
||||||
yy22: if(yych == '\n') goto yy21;
|
yy22: if(yych == '\n') goto yy21;
|
||||||
goto yy20;
|
goto yy20;
|
||||||
}
|
}
|
||||||
#line 251
|
#line 250
|
||||||
|
|
||||||
|
|
||||||
Document:
|
Document:
|
||||||
|
@ -434,7 +433,7 @@ yy23:
|
||||||
yy25: yych = *++YYCURSOR;
|
yy25: yych = *++YYCURSOR;
|
||||||
goto yy77;
|
goto yy77;
|
||||||
yy26:
|
yy26:
|
||||||
#line 265
|
#line 264
|
||||||
{ // Isolate spaces
|
{ // Isolate spaces
|
||||||
int indt_len;
|
int indt_len;
|
||||||
GOBBLE_UP_INDENT( indt_len, YYTOKEN );
|
GOBBLE_UP_INDENT( indt_len, YYTOKEN );
|
||||||
|
@ -451,7 +450,7 @@ yy26:
|
||||||
}
|
}
|
||||||
yy27: yych = *++YYCURSOR;
|
yy27: yych = *++YYCURSOR;
|
||||||
yy28:
|
yy28:
|
||||||
#line 280
|
#line 279
|
||||||
{ ENSURE_IOPEN(lvl, 0, 1);
|
{ ENSURE_IOPEN(lvl, 0, 1);
|
||||||
lvl = CURRENT_LEVEL();
|
lvl = CURRENT_LEVEL();
|
||||||
ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline);
|
ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline);
|
||||||
|
@ -459,7 +458,7 @@ yy28:
|
||||||
}
|
}
|
||||||
yy29: yych = *++YYCURSOR;
|
yy29: yych = *++YYCURSOR;
|
||||||
yy30:
|
yy30:
|
||||||
#line 286
|
#line 285
|
||||||
{ POP_LEVEL();
|
{ POP_LEVEL();
|
||||||
return YYTOKEN[0];
|
return YYTOKEN[0];
|
||||||
}
|
}
|
||||||
|
@ -467,7 +466,7 @@ yy31: yych = *++YYCURSOR;
|
||||||
if(yych == '\n') goto yy74;
|
if(yych == '\n') goto yy74;
|
||||||
if(yych == ' ') goto yy71;
|
if(yych == ' ') goto yy71;
|
||||||
yy32:
|
yy32:
|
||||||
#line 335
|
#line 334
|
||||||
{ ENSURE_IOPEN(lvl, 0, 1);
|
{ ENSURE_IOPEN(lvl, 0, 1);
|
||||||
goto Plain;
|
goto Plain;
|
||||||
}
|
}
|
||||||
|
@ -485,15 +484,15 @@ yy35: yych = *++YYCURSOR;
|
||||||
goto yy32;
|
goto yy32;
|
||||||
yy36: yych = *++YYCURSOR;
|
yy36: yych = *++YYCURSOR;
|
||||||
yy37:
|
yy37:
|
||||||
#line 312
|
#line 311
|
||||||
{ goto TransferMethod; }
|
{ goto TransferMethod; }
|
||||||
yy38: yych = *++YYCURSOR;
|
yy38: yych = *++YYCURSOR;
|
||||||
yy39:
|
yy39:
|
||||||
#line 314
|
#line 313
|
||||||
{ goto SingleQuote; }
|
{ goto SingleQuote; }
|
||||||
yy40: yych = *++YYCURSOR;
|
yy40: yych = *++YYCURSOR;
|
||||||
yy41:
|
yy41:
|
||||||
#line 316
|
#line 315
|
||||||
{ goto DoubleQuote; }
|
{ goto DoubleQuote; }
|
||||||
yy42: yyaccept = 0;
|
yy42: yyaccept = 0;
|
||||||
yych = *(YYMARKER = ++YYCURSOR);
|
yych = *(YYMARKER = ++YYCURSOR);
|
||||||
|
@ -514,18 +513,18 @@ yy42: yyaccept = 0;
|
||||||
}
|
}
|
||||||
yy43: yych = *++YYCURSOR;
|
yy43: yych = *++YYCURSOR;
|
||||||
yy44:
|
yy44:
|
||||||
#line 325
|
#line 324
|
||||||
{ eat_comments( parser );
|
{ eat_comments( parser );
|
||||||
goto Document;
|
goto Document;
|
||||||
}
|
}
|
||||||
yy45: yych = *++YYCURSOR;
|
yy45: yych = *++YYCURSOR;
|
||||||
goto yy51;
|
goto yy51;
|
||||||
yy46:
|
yy46:
|
||||||
#line 329
|
#line 328
|
||||||
{ goto Document; }
|
{ goto Document; }
|
||||||
yy47: yych = *++YYCURSOR;
|
yy47: yych = *++YYCURSOR;
|
||||||
yy48:
|
yy48:
|
||||||
#line 331
|
#line 330
|
||||||
{ ENSURE_IEND(lvl, -1);
|
{ ENSURE_IEND(lvl, -1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -560,7 +559,7 @@ yy55: ++YYCURSOR;
|
||||||
yych = *YYCURSOR;
|
yych = *YYCURSOR;
|
||||||
yy56: if(yych == ' ') goto yy55;
|
yy56: if(yych == ' ') goto yy55;
|
||||||
yy57:
|
yy57:
|
||||||
#line 318
|
#line 317
|
||||||
{ if ( *( YYCURSOR - 1 ) == '\n' )
|
{ if ( *( YYCURSOR - 1 ) == '\n' )
|
||||||
{
|
{
|
||||||
YYCURSOR--;
|
YYCURSOR--;
|
||||||
|
@ -577,7 +576,7 @@ yy60: ++YYCURSOR;
|
||||||
yych = *YYCURSOR;
|
yych = *YYCURSOR;
|
||||||
yy61: if(yybm[0+yych] & 64) goto yy60;
|
yy61: if(yybm[0+yych] & 64) goto yy60;
|
||||||
yy62:
|
yy62:
|
||||||
#line 308
|
#line 307
|
||||||
{ yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
|
{ yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
|
||||||
return ALIAS;
|
return ALIAS;
|
||||||
}
|
}
|
||||||
|
@ -588,7 +587,7 @@ yy64: if(yych <= '-') goto yy65;
|
||||||
if(yych == '`') goto yy65;
|
if(yych == '`') goto yy65;
|
||||||
if(yych <= 'z') goto yy63;
|
if(yych <= 'z') goto yy63;
|
||||||
yy65:
|
yy65:
|
||||||
#line 304
|
#line 303
|
||||||
{ yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
|
{ yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
|
||||||
return ANCHOR;
|
return ANCHOR;
|
||||||
}
|
}
|
||||||
|
@ -597,7 +596,7 @@ yy66: ++YYCURSOR;
|
||||||
yych = *YYCURSOR;
|
yych = *YYCURSOR;
|
||||||
yy67: if(yych == ' ') goto yy66;
|
yy67: if(yych == ' ') goto yy66;
|
||||||
yy68:
|
yy68:
|
||||||
#line 294
|
#line 293
|
||||||
{ ENSURE_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1);
|
{ ENSURE_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1);
|
||||||
FORCE_NEXT_TOKEN(IOPEN);
|
FORCE_NEXT_TOKEN(IOPEN);
|
||||||
if ( *( YYCURSOR - 1 ) == '\n' )
|
if ( *( YYCURSOR - 1 ) == '\n' )
|
||||||
|
@ -617,7 +616,7 @@ yy71: ++YYCURSOR;
|
||||||
yych = *YYCURSOR;
|
yych = *YYCURSOR;
|
||||||
yy72: if(yych == ' ') goto yy71;
|
yy72: if(yych == ' ') goto yy71;
|
||||||
yy73:
|
yy73:
|
||||||
#line 290
|
#line 289
|
||||||
{ YYPOS(1);
|
{ YYPOS(1);
|
||||||
return YYTOKEN[0];
|
return YYTOKEN[0];
|
||||||
}
|
}
|
||||||
|
@ -637,7 +636,7 @@ yy78: ++YYCURSOR;
|
||||||
yy79: if(yybm[0+yych] & 128) goto yy78;
|
yy79: if(yybm[0+yych] & 128) goto yy78;
|
||||||
goto yy26;
|
goto yy26;
|
||||||
}
|
}
|
||||||
#line 339
|
#line 338
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -705,14 +704,14 @@ yy83: yyaccept = 0;
|
||||||
if(yych == '`') goto yy84;
|
if(yych == '`') goto yy84;
|
||||||
if(yych <= 'z') goto yy90;
|
if(yych <= 'z') goto yy90;
|
||||||
yy84:
|
yy84:
|
||||||
#line 352
|
#line 351
|
||||||
{ YYCURSOR = YYTOKTMP;
|
{ YYCURSOR = YYTOKTMP;
|
||||||
return DOCSEP;
|
return DOCSEP;
|
||||||
}
|
}
|
||||||
yy85: yych = *++YYCURSOR;
|
yy85: yych = *++YYCURSOR;
|
||||||
goto yy89;
|
goto yy89;
|
||||||
yy86:
|
yy86:
|
||||||
#line 350
|
#line 349
|
||||||
{ goto Directive; }
|
{ goto Directive; }
|
||||||
yy87: yych = *++YYCURSOR;
|
yy87: yych = *++YYCURSOR;
|
||||||
goto yy84;
|
goto yy84;
|
||||||
|
@ -734,10 +733,10 @@ yy93: ++YYCURSOR;
|
||||||
yych = *YYCURSOR;
|
yych = *YYCURSOR;
|
||||||
yy94: if(yybm[0+yych] & 128) goto yy93;
|
yy94: if(yybm[0+yych] & 128) goto yy93;
|
||||||
yy95:
|
yy95:
|
||||||
#line 348
|
#line 347
|
||||||
{ goto Directive; }
|
{ goto Directive; }
|
||||||
}
|
}
|
||||||
#line 355
|
#line 354
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -820,7 +819,7 @@ yy96:
|
||||||
yy98: yych = *++YYCURSOR;
|
yy98: yych = *++YYCURSOR;
|
||||||
goto yy122;
|
goto yy122;
|
||||||
yy99:
|
yy99:
|
||||||
#line 375
|
#line 374
|
||||||
{ int indt_len;
|
{ int indt_len;
|
||||||
SyckLevel *lvl;
|
SyckLevel *lvl;
|
||||||
char *tok = YYTOKTMP;
|
char *tok = YYTOKTMP;
|
||||||
|
@ -839,11 +838,11 @@ yy100: yych = *++YYCURSOR;
|
||||||
if(yych == '\n') goto yy119;
|
if(yych == '\n') goto yy119;
|
||||||
if(yych == ' ') goto yy116;
|
if(yych == ' ') goto yy116;
|
||||||
yy101:
|
yy101:
|
||||||
#line 404
|
#line 403
|
||||||
{ goto Plain2; }
|
{ goto Plain2; }
|
||||||
yy102: yych = *++YYCURSOR;
|
yy102: yych = *++YYCURSOR;
|
||||||
yy103:
|
yy103:
|
||||||
#line 392
|
#line 391
|
||||||
{ if ( plvl->status != syck_lvl_inline ) goto Plain2;
|
{ if ( plvl->status != syck_lvl_inline ) goto Plain2;
|
||||||
RETURN_IMPLICIT(multiLine);
|
RETURN_IMPLICIT(multiLine);
|
||||||
}
|
}
|
||||||
|
@ -853,18 +852,18 @@ yy104: yych = *++YYCURSOR;
|
||||||
goto yy101;
|
goto yy101;
|
||||||
yy105: yych = *++YYCURSOR;
|
yy105: yych = *++YYCURSOR;
|
||||||
yy106:
|
yy106:
|
||||||
#line 396
|
#line 395
|
||||||
{ RETURN_IMPLICIT(multiLine); }
|
{ RETURN_IMPLICIT(multiLine); }
|
||||||
yy107: yych = *++YYCURSOR;
|
yy107: yych = *++YYCURSOR;
|
||||||
if(yych == '#') goto yy110;
|
if(yych == '#') goto yy110;
|
||||||
yy108:
|
yy108:
|
||||||
#line 402
|
#line 401
|
||||||
{ goto Plain3; }
|
{ goto Plain3; }
|
||||||
yy109: yych = *++YYCURSOR;
|
yy109: yych = *++YYCURSOR;
|
||||||
goto yy101;
|
goto yy101;
|
||||||
yy110: yych = *++YYCURSOR;
|
yy110: yych = *++YYCURSOR;
|
||||||
yy111:
|
yy111:
|
||||||
#line 398
|
#line 397
|
||||||
{ eat_comments( parser );
|
{ eat_comments( parser );
|
||||||
RETURN_IMPLICIT(multiLine);
|
RETURN_IMPLICIT(multiLine);
|
||||||
}
|
}
|
||||||
|
@ -883,7 +882,7 @@ yy116: ++YYCURSOR;
|
||||||
yych = *YYCURSOR;
|
yych = *YYCURSOR;
|
||||||
yy117: if(yych == ' ') goto yy116;
|
yy117: if(yych == ' ') goto yy116;
|
||||||
yy118:
|
yy118:
|
||||||
#line 390
|
#line 389
|
||||||
{ RETURN_IMPLICIT(multiLine); }
|
{ RETURN_IMPLICIT(multiLine); }
|
||||||
yy119: ++YYCURSOR;
|
yy119: ++YYCURSOR;
|
||||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||||
|
@ -901,7 +900,7 @@ yy123: ++YYCURSOR;
|
||||||
yy124: if(yybm[0+yych] & 128) goto yy123;
|
yy124: if(yybm[0+yych] & 128) goto yy123;
|
||||||
goto yy99;
|
goto yy99;
|
||||||
}
|
}
|
||||||
#line 406
|
#line 405
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -966,7 +965,7 @@ yy125:
|
||||||
yy127: yych = *++YYCURSOR;
|
yy127: yych = *++YYCURSOR;
|
||||||
goto yy137;
|
goto yy137;
|
||||||
yy128:
|
yy128:
|
||||||
#line 420
|
#line 419
|
||||||
{ int indt_len;
|
{ int indt_len;
|
||||||
int nl_count = 0;
|
int nl_count = 0;
|
||||||
SyckLevel *lvl;
|
SyckLevel *lvl;
|
||||||
|
@ -1005,7 +1004,7 @@ yy128:
|
||||||
yy129: yych = *++YYCURSOR;
|
yy129: yych = *++YYCURSOR;
|
||||||
if(yych == '\'') goto yy134;
|
if(yych == '\'') goto yy134;
|
||||||
yy130:
|
yy130:
|
||||||
#line 460
|
#line 459
|
||||||
{ SyckLevel *lvl;
|
{ SyckLevel *lvl;
|
||||||
SyckNode *n = syck_alloc_str();
|
SyckNode *n = syck_alloc_str();
|
||||||
lvl = CURRENT_LEVEL();
|
lvl = CURRENT_LEVEL();
|
||||||
|
@ -1023,13 +1022,13 @@ yy131: yych = *++YYCURSOR;
|
||||||
goto yy130;
|
goto yy130;
|
||||||
yy132: yych = *++YYCURSOR;
|
yy132: yych = *++YYCURSOR;
|
||||||
yy133:
|
yy133:
|
||||||
#line 474
|
#line 473
|
||||||
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
|
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
|
||||||
goto SingleQuote2;
|
goto SingleQuote2;
|
||||||
}
|
}
|
||||||
yy134: yych = *++YYCURSOR;
|
yy134: yych = *++YYCURSOR;
|
||||||
yy135:
|
yy135:
|
||||||
#line 456
|
#line 455
|
||||||
{ QUOTECAT(qstr, qcapa, qidx, '\'');
|
{ QUOTECAT(qstr, qcapa, qidx, '\'');
|
||||||
goto SingleQuote2;
|
goto SingleQuote2;
|
||||||
}
|
}
|
||||||
|
@ -1044,7 +1043,7 @@ yy138: ++YYCURSOR;
|
||||||
yy139: if(yybm[0+yych] & 128) goto yy138;
|
yy139: if(yybm[0+yych] & 128) goto yy138;
|
||||||
goto yy128;
|
goto yy128;
|
||||||
}
|
}
|
||||||
#line 478
|
#line 477
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1114,7 +1113,7 @@ yy140:
|
||||||
yy142: yych = *++YYCURSOR;
|
yy142: yych = *++YYCURSOR;
|
||||||
goto yy158;
|
goto yy158;
|
||||||
yy143:
|
yy143:
|
||||||
#line 496
|
#line 495
|
||||||
{ int indt_len;
|
{ int indt_len;
|
||||||
int nl_count = 0;
|
int nl_count = 0;
|
||||||
SyckLevel *lvl;
|
SyckLevel *lvl;
|
||||||
|
@ -1186,13 +1185,13 @@ yy144: yyaccept = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
yy145:
|
yy145:
|
||||||
#line 571
|
#line 570
|
||||||
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
|
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
|
||||||
goto DoubleQuote2;
|
goto DoubleQuote2;
|
||||||
}
|
}
|
||||||
yy146: yych = *++YYCURSOR;
|
yy146: yych = *++YYCURSOR;
|
||||||
yy147:
|
yy147:
|
||||||
#line 557
|
#line 556
|
||||||
{ SyckLevel *lvl;
|
{ SyckLevel *lvl;
|
||||||
SyckNode *n = syck_alloc_str();
|
SyckNode *n = syck_alloc_str();
|
||||||
lvl = CURRENT_LEVEL();
|
lvl = CURRENT_LEVEL();
|
||||||
|
@ -1221,14 +1220,14 @@ yy152: YYCURSOR = YYMARKER;
|
||||||
}
|
}
|
||||||
yy153: yych = *++YYCURSOR;
|
yy153: yych = *++YYCURSOR;
|
||||||
yy154:
|
yy154:
|
||||||
#line 552
|
#line 551
|
||||||
{ keep_nl = 0;
|
{ keep_nl = 0;
|
||||||
YYCURSOR--;
|
YYCURSOR--;
|
||||||
goto DoubleQuote2;
|
goto DoubleQuote2;
|
||||||
}
|
}
|
||||||
yy155: yych = *++YYCURSOR;
|
yy155: yych = *++YYCURSOR;
|
||||||
yy156:
|
yy156:
|
||||||
#line 536
|
#line 535
|
||||||
{ char ch = *( YYCURSOR - 1 );
|
{ char ch = *( YYCURSOR - 1 );
|
||||||
switch ( ch )
|
switch ( ch )
|
||||||
{
|
{
|
||||||
|
@ -1255,7 +1254,7 @@ yy159: ++YYCURSOR;
|
||||||
yy160: if(yybm[0+yych] & 128) goto yy159;
|
yy160: if(yybm[0+yych] & 128) goto yy159;
|
||||||
goto yy143;
|
goto yy143;
|
||||||
}
|
}
|
||||||
#line 575
|
#line 574
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1316,7 +1315,7 @@ yy161:
|
||||||
yy163:yy164: yych = *++YYCURSOR;
|
yy163:yy164: yych = *++YYCURSOR;
|
||||||
goto yy172;
|
goto yy172;
|
||||||
yy165:
|
yy165:
|
||||||
#line 584
|
#line 583
|
||||||
{ SyckLevel *lvl;
|
{ SyckLevel *lvl;
|
||||||
YYCURSOR = YYTOKTMP;
|
YYCURSOR = YYTOKTMP;
|
||||||
if ( YYCURSOR == YYTOKEN + 1 )
|
if ( YYCURSOR == YYTOKEN + 1 )
|
||||||
|
@ -1331,14 +1330,14 @@ yy165:
|
||||||
//
|
//
|
||||||
if ( *(YYTOKEN + 1) == '^' )
|
if ( *(YYTOKEN + 1) == '^' )
|
||||||
{
|
{
|
||||||
yylval->name = S_ALLOC_N( char, YYCURSOR - YYTOKEN + strlen( lvl->domain ) );
|
yylval->name = S_ALLOC_N( char, ( YYCURSOR - YYTOKEN ) + strlen( lvl->domain ) );
|
||||||
yylval->name[0] = '\0';
|
yylval->name[0] = '\0';
|
||||||
strcat( yylval->name, lvl->domain );
|
strcat( yylval->name, lvl->domain );
|
||||||
strncat( yylval->name, YYTOKEN + 2, YYCURSOR - YYTOKEN - 2 );
|
strncat( yylval->name, YYTOKEN + 2, ( YYCURSOR - YYTOKEN ) - 2 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char *carat = YYTOKEN + 1;
|
char *carat = YYTOKEN;
|
||||||
while ( (++carat) < YYCURSOR )
|
while ( (++carat) < YYCURSOR )
|
||||||
{
|
{
|
||||||
if ( *carat == '^' )
|
if ( *carat == '^' )
|
||||||
|
@ -1347,30 +1346,26 @@ yy165:
|
||||||
|
|
||||||
if ( carat < YYCURSOR )
|
if ( carat < YYCURSOR )
|
||||||
{
|
{
|
||||||
lvl->domain = syck_strndup( YYTOKEN + 1, carat - YYTOKEN - 1 );
|
free( lvl->domain );
|
||||||
yylval->name = S_ALLOC_N( char, YYCURSOR - carat + strlen( lvl->domain ) );
|
lvl->domain = syck_strndup( YYTOKEN + 1, ( carat - YYTOKEN ) - 1 );
|
||||||
|
yylval->name = S_ALLOC_N( char, ( YYCURSOR - carat ) + strlen( lvl->domain ) );
|
||||||
yylval->name[0] = '\0';
|
yylval->name[0] = '\0';
|
||||||
strcat( yylval->name, lvl->domain );
|
strcat( yylval->name, lvl->domain );
|
||||||
strncat( yylval->name, carat + 1, YYCURSOR - carat - 1 );
|
strncat( yylval->name, carat + 1, ( YYCURSOR - carat ) - 1 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
yylval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
|
yylval->name = syck_strndup( YYTOKEN + 1, ( YYCURSOR - YYTOKEN ) - 1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( *YYCURSOR == '\n' )
|
|
||||||
{
|
|
||||||
FORCE_NEXT_TOKEN(IOPEN);
|
|
||||||
ADD_LEVEL(lvl->spaces, syck_lvl_doc);
|
|
||||||
}
|
|
||||||
return TRANSFER;
|
return TRANSFER;
|
||||||
}
|
}
|
||||||
yy166: yych = *++YYCURSOR;
|
yy166: yych = *++YYCURSOR;
|
||||||
goto yy170;
|
goto yy170;
|
||||||
yy167: yych = *++YYCURSOR;
|
yy167: yych = *++YYCURSOR;
|
||||||
yy168:
|
yy168:
|
||||||
#line 634
|
#line 629
|
||||||
{ goto TransferMethod; }
|
{ goto TransferMethod; }
|
||||||
yy169: ++YYCURSOR;
|
yy169: ++YYCURSOR;
|
||||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||||
|
@ -1383,7 +1378,7 @@ yy171: ++YYCURSOR;
|
||||||
yy172: if(yybm[0+yych] & 128) goto yy171;
|
yy172: if(yybm[0+yych] & 128) goto yy171;
|
||||||
goto yy165;
|
goto yy165;
|
||||||
}
|
}
|
||||||
#line 636
|
#line 631
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1476,7 +1471,7 @@ yy173:
|
||||||
yy175: yych = *++YYCURSOR;
|
yy175: yych = *++YYCURSOR;
|
||||||
goto yy184;
|
goto yy184;
|
||||||
yy176:
|
yy176:
|
||||||
#line 678
|
#line 673
|
||||||
{ int indt_len;
|
{ int indt_len;
|
||||||
GOBBLE_UP_INDENT( indt_len, YYTOKTMP );
|
GOBBLE_UP_INDENT( indt_len, YYTOKTMP );
|
||||||
lvl = CURRENT_LEVEL();
|
lvl = CURRENT_LEVEL();
|
||||||
|
@ -1509,7 +1504,7 @@ yy176:
|
||||||
}
|
}
|
||||||
yy177: yych = *++YYCURSOR;
|
yy177: yych = *++YYCURSOR;
|
||||||
yy178:
|
yy178:
|
||||||
#line 710
|
#line 705
|
||||||
{ lvl = CURRENT_LEVEL();
|
{ lvl = CURRENT_LEVEL();
|
||||||
YYCURSOR--;
|
YYCURSOR--;
|
||||||
yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN );
|
yylval->nodeData = syck_new_str2( YYTOKEN, YYCURSOR - YYTOKEN );
|
||||||
|
@ -1519,7 +1514,7 @@ yy178:
|
||||||
}
|
}
|
||||||
yy179: yych = *++YYCURSOR;
|
yy179: yych = *++YYCURSOR;
|
||||||
yy180:
|
yy180:
|
||||||
#line 718
|
#line 713
|
||||||
{ lvl = CURRENT_LEVEL();
|
{ lvl = CURRENT_LEVEL();
|
||||||
if ( lvl->status != syck_lvl_block )
|
if ( lvl->status != syck_lvl_block )
|
||||||
{
|
{
|
||||||
|
@ -1530,7 +1525,7 @@ yy180:
|
||||||
}
|
}
|
||||||
yy181: yych = *++YYCURSOR;
|
yy181: yych = *++YYCURSOR;
|
||||||
yy182:
|
yy182:
|
||||||
#line 727
|
#line 722
|
||||||
{ goto ScalarBlock2; }
|
{ goto ScalarBlock2; }
|
||||||
yy183: ++YYCURSOR;
|
yy183: ++YYCURSOR;
|
||||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||||
|
@ -1543,7 +1538,7 @@ yy185: ++YYCURSOR;
|
||||||
yy186: if(yybm[0+yych] & 128) goto yy185;
|
yy186: if(yybm[0+yych] & 128) goto yy185;
|
||||||
goto yy176;
|
goto yy176;
|
||||||
}
|
}
|
||||||
#line 729
|
#line 724
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1605,7 +1600,7 @@ yy187:
|
||||||
goto yy192;
|
goto yy192;
|
||||||
yy189: yych = *++YYCURSOR;
|
yy189: yych = *++YYCURSOR;
|
||||||
yy190:
|
yy190:
|
||||||
#line 745
|
#line 740
|
||||||
{ SyckLevel *lvl = CURRENT_LEVEL();
|
{ SyckLevel *lvl = CURRENT_LEVEL();
|
||||||
YYCURSOR = tok;
|
YYCURSOR = tok;
|
||||||
return;
|
return;
|
||||||
|
@ -1614,7 +1609,7 @@ yy191: yych = *++YYCURSOR;
|
||||||
goto yy195;
|
goto yy195;
|
||||||
yy192: yych = *++YYCURSOR;
|
yy192: yych = *++YYCURSOR;
|
||||||
yy193:
|
yy193:
|
||||||
#line 750
|
#line 745
|
||||||
{ goto Comment;
|
{ goto Comment;
|
||||||
}
|
}
|
||||||
yy194: ++YYCURSOR;
|
yy194: ++YYCURSOR;
|
||||||
|
@ -1623,7 +1618,7 @@ yy194: ++YYCURSOR;
|
||||||
yy195: if(yybm[0+yych] & 128) goto yy194;
|
yy195: if(yybm[0+yych] & 128) goto yy194;
|
||||||
goto yy190;
|
goto yy190;
|
||||||
}
|
}
|
||||||
#line 753
|
#line 748
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1642,7 +1637,7 @@ yyerror( char *msg )
|
||||||
if ( syck_parser_ptr->error_handler == NULL )
|
if ( syck_parser_ptr->error_handler == NULL )
|
||||||
syck_parser_ptr->error_handler = syck_default_error_handler;
|
syck_parser_ptr->error_handler = syck_default_error_handler;
|
||||||
|
|
||||||
syck_parser_ptr->root = NULL;
|
syck_parser_ptr->root = 0;
|
||||||
(syck_parser_ptr->error_handler)(syck_parser_ptr, msg);
|
(syck_parser_ptr->error_handler)(syck_parser_ptr, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
16
lib/yaml.rb
16
lib/yaml.rb
|
@ -104,18 +104,20 @@ module YAML
|
||||||
@@loader.add_private_type( type_re, &transfer_proc )
|
@@loader.add_private_type( type_re, &transfer_proc )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Detect typing of a string
|
||||||
|
#
|
||||||
|
def YAML.detect_implicit( val )
|
||||||
|
@@loader.detect_implicit( val )
|
||||||
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
# Method to extract colon-seperated type and class, returning
|
# Method to extract colon-seperated type and class, returning
|
||||||
# the type and the constant of the class
|
# the type and the constant of the class
|
||||||
#
|
#
|
||||||
def YAML.read_type_class( type, obj_class )
|
def YAML.read_type_class( type, obj_class )
|
||||||
type =~ /^([^:]+):(.+)/i
|
scheme, domain, type, tclass = type.split( ':', 4 )
|
||||||
if $2
|
tclass.split( "::" ).each { |c| obj_class = obj_class.const_get( c ) } if tclass
|
||||||
type = $1
|
|
||||||
$2.split( "::" ).each { |c|
|
|
||||||
obj_class = obj_class.const_get( c )
|
|
||||||
}
|
|
||||||
end
|
|
||||||
return [ type, obj_class ]
|
return [ type, obj_class ]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -160,25 +160,18 @@ class Struct
|
||||||
end
|
end
|
||||||
|
|
||||||
YAML.add_ruby_type( 'struct' ) { |type, val|
|
YAML.add_ruby_type( 'struct' ) { |type, val|
|
||||||
type =~ /^struct:(\w+)/
|
|
||||||
if Hash === val
|
if Hash === val
|
||||||
type = $1
|
|
||||||
struct_type = nil
|
struct_type = nil
|
||||||
struct_def = []
|
|
||||||
struct_name = ""
|
|
||||||
if $1.to_s.length > 1
|
|
||||||
struct_name = $1[0..$1.length]
|
|
||||||
struct_def << struct_name
|
|
||||||
end
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Use existing Struct if it exists
|
# Use existing Struct if it exists
|
||||||
#
|
#
|
||||||
begin
|
begin
|
||||||
struct_type = Struct.const_get( struct_name )
|
struct_name, struct_type = YAML.read_type_class( type, Struct )
|
||||||
rescue NameError
|
rescue NameError
|
||||||
end
|
end
|
||||||
if not struct_type
|
if not struct_type
|
||||||
|
struct_def = [ type.split( ':', 4 ).last ]
|
||||||
struct_type = Struct.new( *struct_def.concat( val.keys.collect { |k| k.intern } ) )
|
struct_type = Struct.new( *struct_def.concat( val.keys.collect { |k| k.intern } ) )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче