* lib/yaml/rubytypes.rb: passing Range tests.

* ext/syck/syck.h: version 0.44.

* ext/syck/gram.c: transfers no longer open an indentation.
  fixed transfers which precede blocks.

* ext/syck/token.c: ditto.

* ext/syck/syck.c: fixed segfault if an anchor has been released already.

* ext/syck/node.c (syck_free_members): organized order of free'd nodes.

* ext/syck/rubyext.c (syck_emitter_write_m): test for proper string with
  StringValue.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
why 2004-04-26 23:24:46 +00:00
parent 10b598499b
commit a7524e343c
8 changed files with 432 additions and 312 deletions

View File

@ -1,3 +1,21 @@
Tue Apr 27 08:15:13 2004 why the lucky stiff <why@ruby-lang.org>
* lib/yaml/rubytypes.rb: passing Range tests.
* ext/syck/syck.h: version 0.44.
* ext/syck/gram.c: transfers no longer open an indentation.
fixed transfers which precede blocks.
* ext/syck/token.c: ditto.
* ext/syck/syck.c: fixed segfault if an anchor has been released already.
* ext/syck/node.c (syck_free_members): organized order of free'd nodes.
* ext/syck/rubyext.c (syck_emitter_write_m): test for proper string with
StringValue.
Mon Apr 26 23:56:54 2004 Daniel Kelley <news-1082945587@dkelley.gmp.san-jose.ca.us> Mon Apr 26 23:56:54 2004 Daniel Kelley <news-1082945587@dkelley.gmp.san-jose.ca.us>
* README.EXT, README.EXT.ja: fixed wrong function signature. * README.EXT, README.EXT.ja: fixed wrong function signature.

View File

@ -250,7 +250,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */ /* YYFINAL -- State number of the termination state. */
#define YYFINAL 43 #define YYFINAL 43
#define YYLAST 436 #define YYLAST 486
/* YYNTOKENS -- Number of terminals. */ /* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 23 #define YYNTOKENS 23
@ -259,7 +259,7 @@ union yyalloc
/* YYNRULES -- Number of rules. */ /* YYNRULES -- Number of rules. */
#define YYNRULES 75 #define YYNRULES 75
/* YYNRULES -- Number of states. */ /* YYNRULES -- Number of states. */
#define YYNSTATES 128 #define YYNSTATES 132
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2 #define YYUNDEFTOK 2
@ -306,8 +306,8 @@ static const unsigned char yytranslate[] =
static const unsigned char yyprhs[] = static const unsigned char yyprhs[] =
{ {
0, 0, 3, 5, 8, 9, 11, 13, 15, 19, 0, 0, 3, 5, 8, 9, 11, 13, 15, 19,
21, 24, 28, 32, 34, 37, 38, 40, 43, 45, 21, 24, 28, 30, 33, 34, 36, 39, 41, 43,
47, 49, 52, 55, 58, 61, 64, 66, 68, 70, 45, 48, 51, 54, 57, 60, 62, 64, 66, 70,
73, 76, 78, 80, 82, 84, 86, 90, 93, 95, 73, 76, 78, 80, 82, 84, 86, 90, 93, 95,
99, 102, 106, 109, 113, 116, 118, 122, 125, 129, 99, 102, 106, 109, 113, 116, 118, 122, 125, 129,
132, 134, 138, 140, 142, 146, 150, 154, 157, 161, 132, 134, 138, 140, 142, 146, 150, 154, 157, 161,
@ -320,11 +320,11 @@ static const yysigned_char yyrhs[] =
{ {
24, 0, -1, 26, -1, 11, 28, -1, -1, 33, 24, 0, -1, 26, -1, 11, 28, -1, -1, 33,
-1, 27, -1, 34, -1, 29, 26, 32, -1, 34, -1, 27, -1, 34, -1, 29, 26, 32, -1, 34,
-1, 3, 27, -1, 29, 33, 32, -1, 29, 27, -1, 3, 27, -1, 29, 27, 32, -1, 25, -1,
32, -1, 25, -1, 29, 30, -1, -1, 12, -1, 29, 30, -1, -1, 12, -1, 29, 13, -1, 14,
29, 13, -1, 14, -1, 13, -1, 14, -1, 31, -1, 13, -1, 14, -1, 31, 32, -1, 5, 33,
32, -1, 5, 33, -1, 6, 33, -1, 7, 33, -1, 6, 33, -1, 7, 33, -1, 3, 33, -1,
-1, 3, 33, -1, 4, -1, 8, -1, 9, -1, 4, -1, 8, -1, 9, -1, 29, 33, 32, -1,
5, 34, -1, 6, 34, -1, 10, -1, 35, -1, 5, 34, -1, 6, 34, -1, 10, -1, 35, -1,
39, -1, 42, -1, 48, -1, 29, 37, 30, -1, 39, -1, 42, -1, 48, -1, 29, 37, 30, -1,
15, 28, -1, 38, -1, 5, 31, 37, -1, 5, 15, 28, -1, 38, -1, 5, 31, 37, -1, 5,
@ -346,13 +346,13 @@ static const yysigned_char yyrhs[] =
static const unsigned short yyrline[] = static const unsigned short yyrline[] =
{ {
0, 54, 54, 58, 62, 68, 69, 72, 73, 79, 0, 54, 54, 58, 62, 68, 69, 72, 73, 79,
80, 89, 93, 99, 100, 105, 115, 116, 119, 122, 80, 89, 95, 96, 101, 111, 112, 115, 118, 121,
125, 126, 134, 139, 144, 152, 156, 164, 177, 184, 122, 130, 135, 140, 148, 152, 160, 173, 174, 184,
189, 194, 195, 196, 197, 198, 204, 210, 216, 217, 189, 194, 195, 196, 197, 198, 204, 210, 216, 217,
222, 227, 232, 237, 241, 247, 251, 256, 265, 269, 222, 227, 232, 237, 241, 247, 251, 256, 265, 269,
275, 279, 286, 287, 293, 298, 305, 310, 315, 320, 275, 279, 286, 287, 293, 298, 305, 310, 315, 320,
325, 329, 335, 350, 351, 369, 370, 382, 389, 398, 325, 329, 335, 350, 351, 369, 370, 382, 390, 399,
406, 410, 416, 417, 425, 432 407, 411, 417, 418, 427, 434
}; };
#endif #endif
@ -390,8 +390,8 @@ static const unsigned short yytoknum[] =
static const unsigned char yyr1[] = static const unsigned char yyr1[] =
{ {
0, 23, 24, 24, 24, 25, 25, 26, 26, 27, 0, 23, 24, 24, 24, 25, 25, 26, 26, 27,
27, 27, 27, 28, 28, 28, 29, 29, 30, 31, 27, 27, 28, 28, 28, 29, 29, 30, 31, 32,
32, 32, 33, 33, 33, 33, 33, 33, 33, 34, 32, 33, 33, 33, 33, 33, 33, 33, 33, 34,
34, 34, 34, 34, 34, 34, 35, 36, 37, 37, 34, 34, 34, 34, 34, 34, 35, 36, 37, 37,
37, 37, 37, 37, 37, 38, 38, 38, 39, 39, 37, 37, 37, 37, 37, 38, 38, 38, 39, 39,
40, 40, 41, 41, 42, 42, 43, 43, 43, 43, 40, 40, 41, 41, 42, 42, 43, 43, 43, 43,
@ -403,8 +403,8 @@ static const unsigned char yyr1[] =
static const unsigned char yyr2[] = static const unsigned char yyr2[] =
{ {
0, 2, 1, 2, 0, 1, 1, 1, 3, 1, 0, 2, 1, 2, 0, 1, 1, 1, 3, 1,
2, 3, 3, 1, 2, 0, 1, 2, 1, 1, 2, 3, 1, 2, 0, 1, 2, 1, 1, 1,
1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 2,
2, 1, 1, 1, 1, 1, 3, 2, 1, 3, 2, 1, 1, 1, 1, 1, 3, 2, 1, 3,
2, 3, 2, 3, 2, 1, 3, 2, 3, 2, 2, 3, 2, 3, 2, 1, 3, 2, 3, 2,
1, 3, 1, 1, 3, 3, 3, 2, 3, 2, 1, 3, 1, 1, 3, 3, 3, 2, 3, 2,
@ -417,55 +417,57 @@ static const unsigned char yyr2[] =
means the default is an error. */ means the default is an error. */
static const unsigned char yydefact[] = static const unsigned char yydefact[] =
{ {
4, 0, 0, 31, 15, 16, 0, 0, 0, 2, 4, 0, 0, 31, 14, 15, 0, 0, 0, 2,
0, 7, 32, 33, 34, 35, 0, 29, 30, 0, 0, 7, 32, 33, 34, 35, 0, 29, 30, 0,
26, 0, 0, 0, 27, 28, 13, 6, 3, 0, 25, 0, 0, 0, 26, 27, 12, 6, 3, 0,
5, 9, 49, 52, 0, 0, 50, 53, 71, 74, 5, 9, 49, 52, 0, 0, 50, 53, 71, 74,
75, 0, 72, 1, 0, 0, 0, 17, 15, 0, 75, 0, 72, 1, 0, 0, 0, 16, 14, 0,
0, 0, 45, 0, 38, 0, 63, 65, 0, 0, 0, 0, 0, 45, 0, 38, 0, 63, 65, 0,
0, 10, 25, 0, 22, 23, 0, 0, 24, 0, 0, 0, 0, 10, 24, 0, 0, 21, 22, 0,
18, 0, 14, 0, 15, 48, 0, 70, 0, 19, 0, 23, 0, 17, 0, 13, 0, 14, 48, 0,
0, 44, 61, 0, 40, 57, 0, 42, 59, 37, 70, 0, 18, 0, 44, 61, 0, 40, 57, 0,
0, 20, 0, 8, 15, 36, 47, 54, 55, 68, 42, 59, 37, 0, 19, 0, 8, 14, 36, 47,
12, 11, 69, 51, 73, 0, 0, 0, 43, 60, 54, 55, 68, 0, 11, 28, 69, 51, 73, 0,
39, 56, 41, 58, 0, 21, 62, 46, 66, 67, 0, 0, 43, 60, 39, 56, 41, 58, 0, 20,
0, 0, 0, 15, 0, 0, 0, 64 62, 46, 66, 67, 0, 0, 0, 14, 0, 0,
0, 64
}; };
/* YYDEFGOTO[NTERM-NUM]. */ /* YYDEFGOTO[NTERM-NUM]. */
static const yysigned_char yydefgoto[] = static const yysigned_char yydefgoto[] =
{ {
-1, 8, 26, 9, 27, 28, 34, 72, 92, 93, -1, 8, 26, 50, 27, 28, 62, 75, 95, 105,
30, 31, 12, 52, 53, 54, 13, 35, 36, 14, 30, 31, 12, 53, 54, 55, 13, 35, 36, 14,
55, 56, 57, 58, 37, 15, 41, 42 56, 57, 58, 59, 37, 15, 41, 42
}; };
/* 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 -77 #define YYPACT_NINF -79
static const short yypact[] = static const short yypact[] =
{ {
103, 155, 155, -77, 367, -77, 350, 298, 14, -77, 412, 420, 420, -79, 385, -79, 368, 316, 12, -79,
198, -77, -77, -77, -77, -77, 238, -77, -77, 367, 256, -79, -79, -79, -79, -79, 152, -79, -79, 385,
-77, 384, 384, 427, -77, -77, -77, -77, -77, 174, -79, 402, 402, 474, -79, -79, -79, -79, -79, 236,
-77, -77, -77, 8, 218, -13, -77, -77, -77, 8, -79, -79, -79, 14, 276, 22, -79, -79, -79, 14,
-77, 7, -77, -77, 401, 316, 316, -77, 367, 367, -79, -4, -79, -79, 437, 334, 334, -79, 385, 385,
20, 28, -77, -7, 30, -7, -77, -77, 25, 401, 62, 256, 23, -79, 4, 11, 4, -79, -79, 85,
401, -77, -77, 427, -77, -77, 427, 427, -77, 333, 437, 437, 463, -79, -79, 474, 152, -79, -79, 474,
-77, 20, -77, 111, 367, -77, 367, -77, 367, -77, 474, -79, 351, -79, 62, -79, 127, 385, -79, 385,
258, -77, -77, 258, -77, -77, 258, -77, -77, -77, -79, 385, -79, 201, -79, -79, 201, -79, -79, 201,
30, -77, 20, -77, 367, -77, 32, -77, -77, 278, -79, -79, -79, 11, -79, 62, -79, 385, -79, 39,
-77, -77, -77, -77, -77, 414, 414, 414, -77, 30, -79, -79, 296, 62, -79, -79, -79, -79, -79, 450,
-77, 30, -77, 30, 37, -77, -77, -77, -77, -77, 450, 450, -79, 11, -79, 11, -79, 11, 44, -79,
85, 85, 85, 367, 113, 113, 113, -77 -79, -79, -79, -79, 32, 32, 32, 385, 65, 65,
65, -79
}; };
/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
static const short yypgoto[] = static const yysigned_char yypgoto[] =
{ {
-77, -77, 92, 57, -3, -45, 0, -1, 27, -60, -79, -79, 8, 64, -6, -45, 0, -23, 73, -30,
-4, 154, -77, -76, 24, -77, -77, -77, 1, -77, 40, 93, -79, -44, 108, -79, -79, -79, -12, -79,
-9, -77, -24, -22, 2, -77, -77, 11 -19, -79, -29, -78, 2, -79, -79, 7
}; };
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@ -475,98 +477,108 @@ static const short yypgoto[] =
#define YYTABLE_NINF -1 #define YYTABLE_NINF -1
static const unsigned char yytable[] = static const unsigned char yytable[] =
{ {
10, 16, 16, 89, 29, 75, 51, 70, 76, 40, 10, 16, 16, 92, 29, 113, 34, 34, 115, 40,
10, 100, 51, 101, 43, 62, 61, 64, 65, 68, 51, 117, 43, 63, 33, 39, 80, 81, 73, 34,
117, 16, 16, 118, 74, 73, 71, 77, 78, 102, 96, 66, 66, 74, 82, 85, 88, 91, 74, 34,
73, 71, 115, 79, 91, 82, 85, 88, 79, 70, 77, 98, 106, 100, 34, 128, 101, 129, 130, 97,
62, 64, 65, 79, 94, 16, 16, 48, 29, 116, 78, 88, 91, 79, 104, 66, 66, 48, 29, 34,
85, 88, 95, 123, 97, 64, 65, 98, 109, 62, 52, 51, 120, 85, 48, 121, 52, 93, 122, 64,
82, 111, 64, 65, 113, 62, 61, 50, 81, 84, 127, 67, 68, 71, 9, 119, 63, 107, 128, 76,
87, 80, 83, 86, 29, 119, 51, 103, 127, 51, 129, 130, 34, 123, 76, 82, 94, 29, 82, 34,
40, 96, 51, 84, 87, 99, 83, 86, 124, 104, 48, 34, 131, 40, 64, 67, 68, 33, 108, 39,
125, 126, 0, 81, 29, 51, 80, 0, 33, 39, 0, 76, 0, 11, 17, 18, 0, 29, 82, 73,
48, 62, 64, 65, 108, 0, 0, 110, 1, 2, 67, 68, 103, 11, 0, 64, 76, 0, 0, 67,
112, 0, 0, 3, 4, 5, 124, 114, 125, 126, 68, 0, 64, 0, 17, 18, 0, 83, 86, 89,
6, 0, 7, 29, 79, 91, 79, 94, 48, 81, 0, 0, 0, 52, 0, 0, 52, 29, 99, 52,
84, 87, 120, 121, 122, 0, 99, 0, 99, 0, 0, 0, 102, 86, 89, 0, 0, 0, 17, 18,
99, 90, 0, 0, 108, 110, 112, 0, 81, 84, 82, 94, 52, 97, 11, 83, 0, 0, 0, 64,
87, 120, 121, 122, 11, 17, 18, 0, 0, 0, 67, 68, 84, 87, 90, 44, 20, 60, 61, 23,
1, 2, 0, 0, 11, 3, 0, 5, 33, 0, 24, 25, 0, 0, 5, 47, 118, 48, 87, 90,
39, 0, 6, 0, 7, 17, 18, 69, 20, 45, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0,
46, 23, 24, 25, 3, 0, 5, 47, 70, 48, 84, 0, 124, 125, 126, 0, 102, 0, 102, 0,
0, 6, 0, 7, 0, 0, 49, 0, 0, 17, 102, 112, 0, 0, 114, 0, 0, 116, 0, 0,
18, 44, 20, 45, 46, 23, 24, 25, 3, 0, 0, 124, 125, 126, 109, 20, 110, 111, 23, 24,
5, 47, 0, 48, 0, 6, 0, 7, 0, 0, 25, 0, 0, 5, 0, 0, 48, 84, 87, 90,
49, 69, 20, 45, 46, 23, 24, 25, 3, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0,
5, 47, 0, 48, 0, 6, 0, 7, 0, 0, 0, 0, 112, 114, 116, 0, 84, 87, 90, 72,
49, 44, 20, 59, 60, 23, 24, 25, 0, 0, 20, 45, 46, 23, 24, 25, 3, 0, 5, 47,
0, 47, 0, 48, 0, 0, 0, 0, 0, 0, 73, 48, 0, 6, 0, 7, 0, 0, 49, 44,
49, 105, 20, 106, 107, 23, 24, 25, 0, 0, 20, 45, 46, 23, 24, 25, 3, 0, 5, 47,
0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 48, 0, 6, 0, 7, 0, 0, 49, 72,
49, 63, 20, 66, 67, 23, 24, 25, 0, 0, 20, 45, 46, 23, 24, 25, 3, 0, 5, 47,
0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 48, 0, 6, 0, 7, 0, 0, 49, 65,
49, 19, 20, 21, 22, 23, 24, 25, 3, 0, 20, 69, 70, 23, 24, 25, 0, 0, 5, 0,
5, 0, 0, 0, 0, 6, 0, 7, 38, 44, 0, 48, 0, 0, 0, 0, 0, 0, 49, 19,
20, 45, 46, 23, 24, 25, 3, 0, 5, 79, 20, 21, 22, 23, 24, 25, 3, 0, 5, 0,
0, 48, 0, 6, 0, 7, 69, 20, 45, 46, 0, 0, 0, 6, 0, 7, 38, 44, 20, 45,
23, 24, 25, 3, 0, 5, 79, 0, 48, 0, 46, 23, 24, 25, 3, 0, 5, 82, 0, 48,
6, 0, 7, 19, 20, 21, 22, 23, 24, 25, 0, 6, 0, 7, 72, 20, 45, 46, 23, 24,
3, 0, 5, 0, 0, 0, 0, 6, 32, 7, 25, 3, 0, 5, 82, 0, 48, 0, 6, 0,
19, 20, 21, 22, 23, 24, 25, 3, 0, 5, 7, 19, 20, 21, 22, 23, 24, 25, 3, 0,
0, 0, 0, 0, 6, 0, 7, 63, 20, 21, 5, 0, 0, 0, 0, 6, 32, 7, 19, 20,
22, 23, 24, 25, 3, 0, 5, 0, 0, 0, 21, 22, 23, 24, 25, 3, 0, 5, 0, 0,
0, 6, 0, 7, 44, 20, 59, 60, 23, 24, 0, 0, 6, 0, 7, 65, 20, 21, 22, 23,
25, 0, 0, 0, 79, 0, 48, 105, 20, 106, 24, 25, 3, 0, 5, 0, 0, 1, 2, 6,
107, 23, 24, 25, 0, 0, 0, 79, 0, 48, 0, 7, 3, 4, 5, 1, 2, 0, 0, 6,
63, 20, 66, 67, 23, 24, 25 3, 7, 5, 0, 0, 0, 0, 6, 0, 7,
44, 20, 60, 61, 23, 24, 25, 0, 0, 5,
82, 0, 48, 109, 20, 110, 111, 23, 24, 25,
0, 0, 5, 82, 0, 48, 65, 20, 69, 70,
23, 24, 25, 0, 0, 5, 47, 65, 20, 69,
70, 23, 24, 25, 0, 0, 5
}; };
static const yysigned_char yycheck[] = static const short yycheck[] =
{ {
0, 1, 2, 48, 4, 18, 10, 14, 21, 7, 0, 1, 2, 48, 4, 83, 6, 7, 86, 7,
10, 71, 16, 73, 0, 19, 19, 21, 22, 23, 10, 89, 0, 19, 6, 7, 20, 21, 14, 19,
96, 21, 22, 99, 16, 29, 29, 20, 21, 74, 50, 21, 22, 29, 13, 44, 45, 46, 34, 29,
34, 34, 92, 13, 14, 44, 45, 46, 13, 14, 16, 54, 77, 56, 34, 3, 59, 5, 6, 16,
44, 45, 46, 13, 16, 45, 46, 15, 48, 94, 18, 60, 61, 21, 74, 45, 46, 15, 48, 49,
59, 60, 53, 16, 55, 59, 60, 58, 80, 63, 10, 51, 97, 72, 15, 99, 16, 49, 102, 19,
69, 83, 66, 67, 86, 69, 69, 10, 44, 45, 16, 21, 22, 23, 0, 95, 72, 79, 3, 29,
46, 44, 45, 46, 74, 99, 80, 76, 123, 83, 5, 6, 72, 102, 34, 13, 14, 77, 13, 79,
78, 54, 86, 59, 60, 58, 59, 60, 3, 78, 15, 81, 127, 81, 44, 45, 46, 79, 81, 81,
5, 6, -1, 69, 94, 99, 69, -1, 6, 7, -1, 51, -1, 0, 1, 2, -1, 97, 13, 14,
15, 105, 106, 107, 80, -1, -1, 83, 5, 6, 60, 61, 62, 10, -1, 65, 66, -1, -1, 69,
86, -1, -1, 10, 11, 12, 3, 90, 5, 6, 70, -1, 72, -1, 21, 22, -1, 44, 45, 46,
17, -1, 19, 123, 13, 14, 13, 16, 15, 105, -1, -1, -1, 83, -1, -1, 86, 127, 55, 89,
106, 107, 105, 106, 107, -1, 109, -1, 111, -1, -1, -1, 59, 60, 61, -1, -1, -1, 45, 46,
113, 49, -1, -1, 120, 121, 122, -1, 124, 125, 13, 14, 102, 16, 51, 72, -1, -1, -1, 109,
126, 124, 125, 126, 0, 1, 2, -1, -1, -1, 110, 111, 44, 45, 46, 3, 4, 5, 6, 7,
5, 6, -1, -1, 10, 10, -1, 12, 76, -1, 8, 9, -1, -1, 12, 13, 93, 15, 60, 61,
78, -1, 17, -1, 19, 21, 22, 3, 4, 5, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
6, 7, 8, 9, 10, -1, 12, 13, 14, 15, 72, -1, 109, 110, 111, -1, 113, -1, 115, -1,
-1, 17, -1, 19, -1, -1, 22, -1, -1, 45, 117, 83, -1, -1, 86, -1, -1, 89, -1, -1,
46, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, 128, 129, 130, 3, 4, 5, 6, 7, 8,
12, 13, -1, 15, -1, 17, -1, 19, -1, -1, 9, -1, -1, 12, -1, -1, 15, 109, 110, 111,
22, 3, 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, -1, 22, -1, -1, -1, -1, -1, -1,
12, 13, -1, 15, -1, 17, -1, 19, -1, -1, -1, -1, 124, 125, 126, -1, 128, 129, 130, 3,
22, 3, 4, 5, 6, 7, 8, 9, -1, -1,
-1, 13, -1, 15, -1, -1, -1, -1, -1, -1,
22, 3, 4, 5, 6, 7, 8, 9, -1, -1,
-1, -1, -1, 15, -1, -1, -1, -1, -1, -1,
22, 3, 4, 5, 6, 7, 8, 9, -1, -1,
-1, -1, -1, 15, -1, -1, -1, -1, -1, -1,
22, 3, 4, 5, 6, 7, 8, 9, 10, -1,
12, -1, -1, -1, -1, 17, -1, 19, 20, 3,
4, 5, 6, 7, 8, 9, 10, -1, 12, 13, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13,
-1, 15, -1, 17, -1, 19, 3, 4, 5, 6, 14, 15, -1, 17, -1, 19, -1, -1, 22, 3,
7, 8, 9, 10, -1, 12, 13, -1, 15, -1, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13,
17, -1, 19, 3, 4, 5, 6, 7, 8, 9, -1, 15, -1, 17, -1, 19, -1, -1, 22, 3,
10, -1, 12, -1, -1, -1, -1, 17, 18, 19, 4, 5, 6, 7, 8, 9, 10, -1, 12, 13,
3, 4, 5, 6, 7, 8, 9, 10, -1, 12, -1, 15, -1, 17, -1, 19, -1, -1, 22, 3,
-1, -1, -1, -1, 17, -1, 19, 3, 4, 5, 4, 5, 6, 7, 8, 9, -1, -1, 12, -1,
6, 7, 8, 9, 10, -1, 12, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, 22, 3,
4, 5, 6, 7, 8, 9, 10, -1, 12, -1,
-1, -1, -1, 17, -1, 19, 20, 3, 4, 5,
6, 7, 8, 9, 10, -1, 12, 13, -1, 15,
-1, 17, -1, 19, 3, 4, 5, 6, 7, 8, -1, 17, -1, 19, 3, 4, 5, 6, 7, 8,
9, -1, -1, -1, 13, -1, 15, 3, 4, 5, 9, 10, -1, 12, 13, -1, 15, -1, 17, -1,
6, 7, 8, 9, -1, -1, -1, 13, -1, 15, 19, 3, 4, 5, 6, 7, 8, 9, 10, -1,
3, 4, 5, 6, 7, 8, 9 12, -1, -1, -1, -1, 17, 18, 19, 3, 4,
5, 6, 7, 8, 9, 10, -1, 12, -1, -1,
-1, -1, 17, -1, 19, 3, 4, 5, 6, 7,
8, 9, 10, -1, 12, -1, -1, 5, 6, 17,
-1, 19, 10, 11, 12, 5, 6, -1, -1, 17,
10, 19, 12, -1, -1, -1, -1, 17, -1, 19,
3, 4, 5, 6, 7, 8, 9, -1, -1, 12,
13, -1, 15, 3, 4, 5, 6, 7, 8, 9,
-1, -1, 12, 13, -1, 15, 3, 4, 5, 6,
7, 8, 9, -1, -1, 12, 13, 3, 4, 5,
6, 7, 8, 9, -1, -1, 12
}; };
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@ -578,14 +590,15 @@ static const unsigned char yystos[] =
4, 5, 6, 7, 8, 9, 25, 27, 28, 29, 4, 5, 6, 7, 8, 9, 25, 27, 28, 29,
33, 34, 18, 25, 29, 40, 41, 47, 20, 25, 33, 34, 18, 25, 29, 40, 41, 47, 20, 25,
47, 49, 50, 0, 3, 5, 6, 13, 15, 22, 47, 49, 50, 0, 3, 5, 6, 13, 15, 22,
26, 33, 36, 37, 38, 43, 44, 45, 46, 5, 26, 29, 33, 36, 37, 38, 43, 44, 45, 46,
6, 27, 33, 3, 33, 33, 5, 6, 33, 3, 5, 6, 29, 27, 33, 3, 29, 33, 33, 5,
14, 27, 30, 33, 16, 18, 21, 20, 21, 13, 6, 33, 3, 14, 27, 30, 33, 16, 18, 21,
31, 37, 43, 31, 37, 43, 31, 37, 43, 28, 20, 21, 13, 31, 37, 43, 31, 37, 43, 31,
25, 14, 31, 32, 16, 30, 31, 30, 30, 31, 37, 43, 28, 25, 14, 31, 32, 16, 30, 31,
32, 32, 28, 41, 50, 3, 5, 6, 37, 46, 30, 30, 31, 33, 32, 32, 28, 41, 50, 3,
37, 46, 37, 46, 31, 32, 28, 36, 36, 45, 5, 6, 37, 46, 37, 46, 37, 46, 31, 32,
31, 31, 31, 16, 3, 5, 6, 28 28, 36, 36, 45, 31, 31, 31, 16, 3, 5,
6, 28
}; };
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@ -1186,47 +1199,40 @@ yyreduce:
} }
break; break;
case 12: case 13:
#line 94 "gram.y" #line 97 "gram.y"
{ {
yyval.nodeData = yyvsp[-1].nodeData; NULL_NODE( parser, n );
} yyval.nodeData = n;
}
break; break;
case 14: case 14:
#line 101 "gram.y" #line 102 "gram.y"
{ {
NULL_NODE( parser, n ); NULL_NODE( parser, n );
yyval.nodeData = n; yyval.nodeData = n;
} }
break; break;
case 15: case 21:
#line 106 "gram.y" #line 131 "gram.y"
{
NULL_NODE( parser, n );
yyval.nodeData = n;
}
break;
case 22:
#line 135 "gram.y"
{ {
syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion ); syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
yyval.nodeData = yyvsp[0].nodeData; yyval.nodeData = yyvsp[0].nodeData;
} }
break; break;
case 23: case 22:
#line 140 "gram.y" #line 136 "gram.y"
{ {
syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, 0 ); syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, 0 );
yyval.nodeData = yyvsp[0].nodeData; yyval.nodeData = yyvsp[0].nodeData;
} }
break; break;
case 24: case 23:
#line 145 "gram.y" #line 141 "gram.y"
{ {
if ( ((SyckParser *)parser)->implicit_typing == 1 ) if ( ((SyckParser *)parser)->implicit_typing == 1 )
{ {
@ -1236,15 +1242,15 @@ yyreduce:
} }
break; break;
case 25: case 24:
#line 153 "gram.y" #line 149 "gram.y"
{ {
yyval.nodeData = syck_hdlr_add_anchor( (SyckParser *)parser, yyvsp[-1].name, yyvsp[0].nodeData ); yyval.nodeData = syck_hdlr_add_anchor( (SyckParser *)parser, yyvsp[-1].name, yyvsp[0].nodeData );
} }
break; break;
case 26: case 25:
#line 157 "gram.y" #line 153 "gram.y"
{ {
/* /*
* _Aliases_: The anchor symbol table is scanned for the anchor name. * _Aliases_: The anchor symbol table is scanned for the anchor name.
@ -1254,8 +1260,8 @@ yyreduce:
} }
break; break;
case 27: case 26:
#line 165 "gram.y" #line 161 "gram.y"
{ {
SyckNode *n = yyvsp[0].nodeData; SyckNode *n = yyvsp[0].nodeData;
if ( ((SyckParser *)parser)->taguri_expansion == 1 ) if ( ((SyckParser *)parser)->taguri_expansion == 1 )
@ -1270,6 +1276,13 @@ yyreduce:
} }
break; break;
case 28:
#line 175 "gram.y"
{
yyval.nodeData = yyvsp[-1].nodeData;
}
break;
case 29: case 29:
#line 185 "gram.y" #line 185 "gram.y"
{ {
@ -1498,19 +1511,20 @@ yyreduce:
apply_seq_in_map( (SyckParser *)parser, yyvsp[-2].nodeData ); apply_seq_in_map( (SyckParser *)parser, yyvsp[-2].nodeData );
syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData ); syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
syck_free_node( yyvsp[0].nodeData ); syck_free_node( yyvsp[0].nodeData );
yyvsp[0].nodeData = NULL;
yyval.nodeData = yyvsp[-2].nodeData; yyval.nodeData = yyvsp[-2].nodeData;
} }
break; break;
case 68: case 68:
#line 390 "gram.y" #line 391 "gram.y"
{ {
yyval.nodeData = yyvsp[-1].nodeData; yyval.nodeData = yyvsp[-1].nodeData;
} }
break; break;
case 69: case 69:
#line 399 "gram.y" #line 400 "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 ),
@ -1519,30 +1533,31 @@ yyreduce:
break; break;
case 70: case 70:
#line 407 "gram.y" #line 408 "gram.y"
{ {
yyval.nodeData = yyvsp[-1].nodeData; yyval.nodeData = yyvsp[-1].nodeData;
} }
break; break;
case 71: case 71:
#line 411 "gram.y" #line 412 "gram.y"
{ {
yyval.nodeData = syck_alloc_map(); yyval.nodeData = syck_alloc_map();
} }
break; break;
case 73: case 73:
#line 418 "gram.y" #line 419 "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 ); syck_free_node( yyvsp[0].nodeData );
yyvsp[0].nodeData = NULL;
yyval.nodeData = yyvsp[-2].nodeData; yyval.nodeData = yyvsp[-2].nodeData;
} }
break; break;
case 74: case 74:
#line 426 "gram.y" #line 428 "gram.y"
{ {
NULL_NODE( parser, n ); NULL_NODE( parser, n );
yyval.nodeData = syck_new_map( yyval.nodeData = syck_new_map(
@ -1555,7 +1570,7 @@ yyreduce:
} }
/* Line 1016 of /usr/local/share/bison/yacc.c. */ /* Line 1016 of /usr/local/share/bison/yacc.c. */
#line 1559 "y.tab.c" #line 1574 "y.tab.c"
yyvsp -= yylen; yyvsp -= yylen;
yyssp -= yylen; yyssp -= yylen;
@ -1774,7 +1789,7 @@ yyreturn:
} }
#line 435 "gram.y" #line 437 "gram.y"
void void

View File

@ -297,27 +297,38 @@ syck_seq_read( SyckNode *seq, long idx )
void void
syck_free_members( SyckNode *n ) syck_free_members( SyckNode *n )
{ {
if ( n == NULL ) return;
switch ( n->kind ) switch ( n->kind )
{ {
case syck_str_kind: case syck_str_kind:
if ( n->data.str->ptr != NULL ) if ( n->data.str != NULL )
{ {
S_FREE( n->data.str->ptr ); S_FREE( n->data.str->ptr );
n->data.str->ptr = NULL; n->data.str->ptr = NULL;
n->data.str->len = 0; n->data.str->len = 0;
S_FREE( n->data.str ); S_FREE( n->data.str );
n->data.str = NULL;
} }
break; break;
case syck_seq_kind: case syck_seq_kind:
S_FREE( n->data.list->items ); if ( n->data.list != NULL )
S_FREE( n->data.list ); {
S_FREE( n->data.list->items );
S_FREE( n->data.list );
n->data.list = NULL;
}
break; break;
case syck_map_kind: case syck_map_kind:
S_FREE( n->data.pairs->keys ); if ( n->data.pairs != NULL )
S_FREE( n->data.pairs->values ); {
S_FREE( n->data.pairs ); S_FREE( n->data.pairs->keys );
S_FREE( n->data.pairs->values );
S_FREE( n->data.pairs );
n->data.pairs = NULL;
}
break; break;
} }
} }

View File

@ -1337,6 +1337,7 @@ syck_emitter_write_m( self, str )
SyckEmitter *emitter; SyckEmitter *emitter;
Data_Get_Struct(self, SyckEmitter, emitter); Data_Get_Struct(self, SyckEmitter, emitter);
StringValue(str);
syck_emitter_write( emitter, RSTRING(str)->ptr, RSTRING(str)->len ); syck_emitter_write( emitter, RSTRING(str)->ptr, RSTRING(str)->len );
return self; return self;
} }
@ -1351,6 +1352,7 @@ syck_emitter_simple_write( self, str )
SyckEmitter *emitter; SyckEmitter *emitter;
Data_Get_Struct(self, SyckEmitter, emitter); Data_Get_Struct(self, SyckEmitter, emitter);
StringValue(str);
syck_emitter_simple( emitter, RSTRING(str)->ptr, RSTRING(str)->len ); syck_emitter_simple( emitter, RSTRING(str)->ptr, RSTRING(str)->len );
return self; return self;
} }

View File

@ -198,7 +198,8 @@ syck_lookup_sym( SyckParser *p, SYMID id, char **data )
int int
syck_st_free_nodes( char *key, SyckNode *n, char *arg ) syck_st_free_nodes( char *key, SyckNode *n, char *arg )
{ {
syck_free_node( n ); if ( n != (void *)1 ) syck_free_node( n );
n = NULL;
return ST_CONTINUE; return ST_CONTINUE;
} }

View File

@ -13,7 +13,7 @@
#define SYCK_YAML_MAJOR 1 #define SYCK_YAML_MAJOR 1
#define SYCK_YAML_MINOR 0 #define SYCK_YAML_MINOR 0
#define SYCK_VERSION "0.43" #define SYCK_VERSION "0.44"
#define YAML_DOMAIN "yaml.org,2002" #define YAML_DOMAIN "yaml.org,2002"
#include <stdio.h> #include <stdio.h>

View File

@ -205,6 +205,7 @@ 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 * );
char escape_seq( char );
int is_newline( char *ptr ); int is_newline( char *ptr );
int sycklex_yaml_utf8( YYSTYPE *, SyckParser * ); int sycklex_yaml_utf8( YYSTYPE *, SyckParser * );
int sycklex_bytecode_utf8( YYSTYPE *, SyckParser * ); int sycklex_bytecode_utf8( YYSTYPE *, SyckParser * );
@ -256,7 +257,7 @@ sycklex_yaml_utf8( YYSTYPE *sycklval, SyckParser *parser )
return t; return t;
} }
#line 274 #line 276
if ( YYLINEPTR != YYCURSOR ) if ( YYLINEPTR != YYCURSOR )
@ -293,7 +294,7 @@ yy2: yyaccept = 0;
default: goto yy3; default: goto yy3;
} }
yy3: yy3:
#line 333 #line 335
{ YYPOS(0); { YYPOS(0);
goto Document; goto Document;
} }
@ -305,13 +306,13 @@ yy4: yyaccept = 0;
} }
yy5: yych = *++YYCURSOR; yy5: yych = *++YYCURSOR;
yy6: yy6:
#line 315 #line 317
{ eat_comments( parser ); { eat_comments( parser );
goto Header; goto Header;
} }
yy7: yych = *++YYCURSOR; yy7: yych = *++YYCURSOR;
yy8: yy8:
#line 319 #line 321
{ SyckLevel *lvl = CURRENT_LEVEL(); { SyckLevel *lvl = CURRENT_LEVEL();
ENSURE_YAML_IEND(lvl, -1); ENSURE_YAML_IEND(lvl, -1);
YYPOS(0); YYPOS(0);
@ -321,7 +322,7 @@ yy9: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR); yych = *(YYMARKER = ++YYCURSOR);
goto yy18; goto yy18;
yy10: yy10:
#line 325 #line 327
{ GOBBLE_UP_YAML_INDENT( doc_level, YYTOKEN ); { GOBBLE_UP_YAML_INDENT( doc_level, YYTOKEN );
goto Header; goto Header;
} }
@ -333,7 +334,7 @@ yy11: yych = *++YYCURSOR;
yy12: yych = *++YYCURSOR; yy12: yych = *++YYCURSOR;
goto yy16; goto yy16;
yy13: yy13:
#line 329 #line 331
{ doc_level = YYCURSOR - YYLINEPTR; { doc_level = YYCURSOR - YYLINEPTR;
goto Header; goto Header;
} }
@ -381,7 +382,7 @@ yy22: yych = *++YYCURSOR;
} }
yy23: yych = *++YYCURSOR; yy23: yych = *++YYCURSOR;
yy24: yy24:
#line 301 #line 303
{ SyckLevel *lvl = CURRENT_LEVEL(); { SyckLevel *lvl = CURRENT_LEVEL();
if ( lvl->status == syck_lvl_header ) if ( lvl->status == syck_lvl_header )
{ {
@ -421,7 +422,7 @@ yy29: yych = *++YYCURSOR;
} }
yy30: yych = *++YYCURSOR; yy30: yych = *++YYCURSOR;
yy31: yy31:
#line 287 #line 289
{ SyckLevel *lvl = CURRENT_LEVEL(); { SyckLevel *lvl = CURRENT_LEVEL();
if ( lvl->status == syck_lvl_header ) if ( lvl->status == syck_lvl_header )
{ {
@ -448,7 +449,7 @@ yy34: yych = *++YYCURSOR;
default: goto yy20; default: goto yy20;
} }
} }
#line 337 #line 339
Document: Document:
@ -491,7 +492,7 @@ yy37: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR); yych = *(YYMARKER = ++YYCURSOR);
goto yy90; goto yy90;
yy38: yy38:
#line 351 #line 353
{ /* Isolate spaces */ { /* Isolate spaces */
int indt_len; int indt_len;
GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN ); GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN );
@ -525,7 +526,7 @@ yy40:
} }
yy41: yych = *++YYCURSOR; yy41: yych = *++YYCURSOR;
yy42: yy42:
#line 373 #line 375
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1); { ENSURE_YAML_IOPEN(lvl, doc_level, 1);
lvl = CURRENT_LEVEL(); lvl = CURRENT_LEVEL();
ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline); ADD_LEVEL(lvl->spaces + 1, syck_lvl_inline);
@ -533,7 +534,7 @@ yy42:
} }
yy43: yych = *++YYCURSOR; yy43: yych = *++YYCURSOR;
yy44: yy44:
#line 379 #line 381
{ POP_LEVEL(); { POP_LEVEL();
return YYTOKEN[0]; return YYTOKEN[0];
} }
@ -683,9 +684,8 @@ yy48: yych = *++YYCURSOR;
} }
yy49: yych = *++YYCURSOR; yy49: yych = *++YYCURSOR;
yy50: yy50:
#line 418 #line 419
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1); { goto TransferMethod; }
goto TransferMethod; }
yy51: yych = *++YYCURSOR; yy51: yych = *++YYCURSOR;
yy52: yy52:
#line 421 #line 421
@ -853,7 +853,7 @@ yy74: switch(yych){
default: goto yy75; default: goto yy75;
} }
yy75: yy75:
#line 413 #line 414
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1); { ENSURE_YAML_IOPEN(lvl, doc_level, 1);
sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 ); sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
return YAML_ALIAS; return YAML_ALIAS;
@ -925,9 +925,8 @@ yy77: switch(yych){
default: goto yy78; default: goto yy78;
} }
yy78: yy78:
#line 401 #line 403
{ ENSURE_YAML_IOPEN(lvl, doc_level, 1); { sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
/* /*
* Remove previous anchors of the same name. Since the parser will likely * Remove previous anchors of the same name. Since the parser will likely
@ -939,7 +938,7 @@ yy78:
} }
yy79: yych = *++YYCURSOR; yy79: yych = *++YYCURSOR;
yy80: yy80:
#line 387 #line 389
{ ENSURE_YAML_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1); { ENSURE_YAML_IOPEN(lvl, YYTOKEN - YYLINEPTR, 1);
FORCE_NEXT_TOKEN(YAML_IOPEN); FORCE_NEXT_TOKEN(YAML_IOPEN);
if ( is_newline( YYCURSOR ) || is_newline( YYCURSOR - 1 ) ) if ( is_newline( YYCURSOR ) || is_newline( YYCURSOR - 1 ) )
@ -967,7 +966,7 @@ yy83: yych = *++YYCURSOR;
} }
yy84: yych = *++YYCURSOR; yy84: yych = *++YYCURSOR;
yy85: yy85:
#line 383 #line 385
{ YYPOS(1); { YYPOS(1);
return YYTOKEN[0]; return YYTOKEN[0];
} }
@ -1770,7 +1769,7 @@ yy158: yych = *++YYCURSOR;
default: goto yy159; default: goto yy159;
} }
yy159: yy159:
#line 722 #line 711
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto DoubleQuote2; goto DoubleQuote2;
} }
@ -1780,7 +1779,7 @@ yy160: yyaccept = 1;
case '\n': goto yy168; case '\n': goto yy168;
case '\r': goto yy170; case '\r': goto yy170;
case ' ': goto yy165; case ' ': goto yy165;
case '"': case '\\': case 'a': case '"': case '0': case '\\': case 'a':
case 'b': case 'e': case 'b': case 'e':
case 'f': case 'n': case 'r': case 't': case 'v': goto yy172; case 'f': case 'n': case 'r': case 't': case 'v': goto yy172;
case 'x': goto yy171; case 'x': goto yy171;
@ -1788,7 +1787,7 @@ yy160: yyaccept = 1;
} }
yy161: yych = *++YYCURSOR; yy161: yych = *++YYCURSOR;
yy162: yy162:
#line 707 #line 696
{ SyckLevel *lvl; { SyckLevel *lvl;
SyckNode *n = syck_alloc_str(); SyckNode *n = syck_alloc_str();
lvl = CURRENT_LEVEL(); lvl = CURRENT_LEVEL();
@ -1823,7 +1822,7 @@ yy167: YYCURSOR = YYMARKER;
} }
yy168: yych = *++YYCURSOR; yy168: yych = *++YYCURSOR;
yy169: yy169:
#line 702 #line 691
{ keep_nl = 0; { keep_nl = 0;
YYCURSOR--; YYCURSOR--;
goto DoubleQuote2; goto DoubleQuote2;
@ -1860,19 +1859,8 @@ yy171: yych = *++YYCURSOR;
yy172: yych = *++YYCURSOR; yy172: yych = *++YYCURSOR;
yy173: yy173:
#line 677 #line 677
{ char ch = *( YYCURSOR - 1 ); { char ch = *( YYCURSOR - 1 );
switch ( ch ) QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
{
case 'a': ch = 7; break;
case 'b': ch = '\010'; break;
case 'e': ch = '\033'; break;
case 'f': ch = '\014'; break;
case 'n': ch = '\n'; break;
case 'r': ch = '\015'; break;
case 't': ch = '\t'; break;
case 'v': ch = '\013'; break;
}
QUOTECAT(qstr, qcapa, qidx, ch);
goto DoubleQuote2; goto DoubleQuote2;
} }
yy174: yych = *++YYCURSOR; yy174: yych = *++YYCURSOR;
@ -1901,7 +1889,7 @@ yy174: yych = *++YYCURSOR;
} }
yy175: yych = *++YYCURSOR; yy175: yych = *++YYCURSOR;
yy176: yy176:
#line 693 #line 682
{ long ch; { long ch;
char *chr_text = syck_strndup( YYTOKEN, 4 ); char *chr_text = syck_strndup( YYTOKEN, 4 );
chr_text[0] = '0'; chr_text[0] = '0';
@ -1927,7 +1915,7 @@ yy179: ++YYCURSOR;
default: goto yy167; default: goto yy167;
} }
} }
#line 726 #line 715
} }
@ -1962,7 +1950,7 @@ yy182: YYCURSOR = YYMARKER;
} }
yy183: yych = *++YYCURSOR; yy183: yych = *++YYCURSOR;
yy184: yy184:
#line 740 #line 729
{ SyckLevel *lvl; { SyckLevel *lvl;
YYCURSOR = YYTOKTMP; YYCURSOR = YYTOKTMP;
if ( YYCURSOR == YYTOKEN + 1 ) if ( YYCURSOR == YYTOKEN + 1 )
@ -2013,20 +2001,23 @@ yy184:
return YAML_TRANSFER; return YAML_TRANSFER;
} }
yy185: yych = *++YYCURSOR; yy185: yych = *++YYCURSOR;
goto yy196; goto yy198;
yy186: yych = *++YYCURSOR; yy186: yych = *++YYCURSOR;
switch(yych){ switch(yych){
case '\n': goto yy194; case '\n': goto yy196;
default: goto yy187; default: goto yy187;
} }
yy187: yy187:
#line 802 #line 796
{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1)); { QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
goto TransferMethod2; goto TransferMethod2;
} }
yy188: yyaccept = 0; yy188: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR); yych = *(YYMARKER = ++YYCURSOR);
switch(yych){ switch(yych){
case '"': case '0': case '\\': case 'a':
case 'b': case 'e':
case 'f': case 'n': case 'r': case 't': case 'v': goto yy191;
case 'x': goto yy190; case 'x': goto yy190;
default: goto yy187; default: goto yy187;
} }
@ -2053,10 +2044,17 @@ yy190: yych = *++YYCURSOR;
case 'c': case 'c':
case 'd': case 'd':
case 'e': case 'e':
case 'f': goto yy191; case 'f': goto yy193;
default: goto yy182; default: goto yy182;
} }
yy191: yych = *++YYCURSOR; yy191: yych = *++YYCURSOR;
yy192:
#line 782
{ char ch = *( YYCURSOR - 1 );
QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
goto TransferMethod2;
}
yy193: yych = *++YYCURSOR;
switch(yych){ switch(yych){
case '0': case '0':
case '1': case '1':
@ -2077,12 +2075,12 @@ yy191: yych = *++YYCURSOR;
case 'c': case 'c':
case 'd': case 'd':
case 'e': case 'e':
case 'f': goto yy192; case 'f': goto yy194;
default: goto yy182; default: goto yy182;
} }
yy192: yych = *++YYCURSOR; yy194: yych = *++YYCURSOR;
yy193: yy195:
#line 793 #line 787
{ long ch; { long ch;
char *chr_text = syck_strndup( YYTOKTMP, 4 ); char *chr_text = syck_strndup( YYTOKTMP, 4 );
chr_text[0] = '0'; chr_text[0] = '0';
@ -2091,17 +2089,17 @@ yy193:
QUOTECAT(qstr, qcapa, qidx, ch); QUOTECAT(qstr, qcapa, qidx, ch);
goto TransferMethod2; goto TransferMethod2;
} }
yy194: yych = *++YYCURSOR; yy196: yych = *++YYCURSOR;
goto yy184; goto yy184;
yy195: ++YYCURSOR; yy197: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR; yych = *YYCURSOR;
yy196: switch(yych){ yy198: switch(yych){
case ' ': goto yy195; case ' ': goto yy197;
default: goto yy184; default: goto yy184;
} }
} }
#line 807 #line 801
} }
@ -2150,23 +2148,24 @@ ScalarBlock2:
{ {
YYCTYPE yych; YYCTYPE yych;
unsigned int yyaccept; unsigned int yyaccept;
goto yy197; goto yy199;
yy198: ++YYCURSOR; yy200: ++YYCURSOR;
yy197: yy199:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
yych = *YYCURSOR; yych = *YYCURSOR;
switch(yych){ switch(yych){
case '\000': goto yy205; case '\000': goto yy207;
case '\n': goto yy199; case '\n': goto yy201;
case '\r': goto yy201; case '\r': goto yy203;
case '#': goto yy203; case '#': goto yy205;
default: goto yy207; case '-': goto yy209;
default: goto yy210;
} }
yy199: yyaccept = 0; yy201: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR); yych = *(YYMARKER = ++YYCURSOR);
goto yy209; goto yy220;
yy200: yy202:
#line 854 #line 848
{ char *pacer; { char *pacer;
char *tok = YYTOKEN; char *tok = YYTOKEN;
int indt_len = 0, nl_count = 0, fold_nl = 0, nl_begin = 0; int indt_len = 0, nl_count = 0, fold_nl = 0, nl_begin = 0;
@ -2232,19 +2231,19 @@ yy200:
} }
goto ScalarBlock2; goto ScalarBlock2;
} }
yy201: yych = *++YYCURSOR; yy203: yych = *++YYCURSOR;
switch(yych){ switch(yych){
case '\n': goto yy208; case '\n': goto yy219;
default: goto yy202; default: goto yy204;
} }
yy202: yy204:
#line 940 #line 953
{ QUOTECAT(qstr, qcapa, qidx, *YYTOKEN); { QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
goto ScalarBlock2; goto ScalarBlock2;
} }
yy203: yych = *++YYCURSOR; yy205: yych = *++YYCURSOR;
yy204: yy206:
#line 921 #line 915
{ lvl = CURRENT_LEVEL(); { lvl = CURRENT_LEVEL();
if ( lvl->status != syck_lvl_block ) if ( lvl->status != syck_lvl_block )
{ {
@ -2257,37 +2256,89 @@ yy204:
} }
goto ScalarBlock2; goto ScalarBlock2;
} }
yy205: yych = *++YYCURSOR; yy207: yych = *++YYCURSOR;
yy206: yy208:
#line 935 #line 929
{ YYCURSOR--; { YYCURSOR--;
POP_LEVEL(); POP_LEVEL();
RETURN_YAML_BLOCK(); RETURN_YAML_BLOCK();
} }
yy207: yych = *++YYCURSOR; yy209: yyaccept = 1;
goto yy202; yych = *(YYMARKER = ++YYCURSOR);
yy208: yyaccept = 0; switch(yych){
case '-': goto yy211;
default: goto yy204;
}
yy210: yych = *++YYCURSOR;
goto yy204;
yy211: yych = *++YYCURSOR;
switch(yych){
case '-': goto yy213;
default: goto yy212;
}
yy212: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy202;
case 1: goto yy204;
}
yy213: yych = *++YYCURSOR;
switch(yych){
case '\n': goto yy214;
case '\r': goto yy218;
case ' ': goto yy216;
default: goto yy212;
}
yy214: yych = *++YYCURSOR;
yy215:
#line 934
{ if ( YYTOKEN == YYLINEPTR )
{
if ( blockType == BLOCK_FOLD )
{
qidx -= 1;
}
QUOTECAT(qstr, qcapa, qidx, '\n');
POP_LEVEL();
YYCURSOR = YYTOKEN;
RETURN_YAML_BLOCK();
}
else
{
QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
YYCURSOR = YYTOKEN + 1;
goto ScalarBlock2;
}
}
yy216: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy217: switch(yych){
case ' ': goto yy216;
default: goto yy215;
}
yy218: yych = *++YYCURSOR;
switch(yych){
case '\n': goto yy214;
default: goto yy212;
}
yy219: yyaccept = 0;
YYMARKER = ++YYCURSOR; YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR; yych = *YYCURSOR;
yy209: switch(yych){ yy220: switch(yych){
case '\n': case ' ': goto yy208; case '\n': case ' ': goto yy219;
case '\r': goto yy210; case '\r': goto yy221;
default: goto yy200; default: goto yy202;
} }
yy210: ++YYCURSOR; yy221: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR; yych = *YYCURSOR;
switch(yych){ switch(yych){
case '\n': goto yy208; case '\n': goto yy219;
default: goto yy211; default: goto yy212;
}
yy211: YYCURSOR = YYMARKER;
switch(yyaccept){
case 0: goto yy200;
} }
} }
#line 945 #line 958
} }
@ -2305,65 +2356,83 @@ Comment:
{ {
YYCTYPE yych; YYCTYPE yych;
unsigned int yyaccept; unsigned int yyaccept;
goto yy212; goto yy222;
yy213: ++YYCURSOR; yy223: ++YYCURSOR;
yy212: yy222:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR; yych = *YYCURSOR;
switch(yych){ switch(yych){
case '\000': goto yy214; case '\000': goto yy224;
case '\n': goto yy216; case '\n': goto yy226;
case '\r': goto yy217; case '\r': goto yy227;
default: goto yy219; default: goto yy229;
} }
yy214: yych = *++YYCURSOR; yy224: yych = *++YYCURSOR;
yy215: yy225:
#line 961 #line 974
{ YYCURSOR = YYTOKEN; { YYCURSOR = YYTOKEN;
return; return;
} }
yy216: yyaccept = 0; yy226: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR); yych = *(YYMARKER = ++YYCURSOR);
goto yy221; goto yy231;
yy217: yych = *++YYCURSOR; yy227: yych = *++YYCURSOR;
switch(yych){ switch(yych){
case '\n': goto yy220; case '\n': goto yy230;
default: goto yy218; default: goto yy228;
} }
yy218: yy228:
#line 965 #line 978
{ goto Comment; { goto Comment;
} }
yy219: yych = *++YYCURSOR; yy229: yych = *++YYCURSOR;
goto yy218; goto yy228;
yy220: yyaccept = 0; yy230: yyaccept = 0;
YYMARKER = ++YYCURSOR; YYMARKER = ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR; yych = *YYCURSOR;
yy221: switch(yych){ yy231: switch(yych){
case '\n': goto yy220; case '\n': goto yy230;
case '\r': goto yy222; case '\r': goto yy232;
default: goto yy215; default: goto yy225;
} }
yy222: ++YYCURSOR; yy232: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1); if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR; yych = *YYCURSOR;
switch(yych){ switch(yych){
case '\n': goto yy220; case '\n': goto yy230;
default: goto yy223; default: goto yy233;
} }
yy223: YYCURSOR = YYMARKER; yy233: YYCURSOR = YYMARKER;
switch(yyaccept){ switch(yyaccept){
case 0: goto yy215; case 0: goto yy225;
} }
} }
#line 968 #line 981
} }
} }
char
escape_seq( char ch )
{
switch ( ch )
{
case '0': return '\0';
case 'a': return 7;
case 'b': return '\010';
case 'e': return '\033';
case 'f': return '\014';
case 'n': return '\n';
case 'r': return '\015';
case 't': return '\t';
case 'v': return '\013';
default: return ch;
}
}
int int
is_newline( char *ptr ) is_newline( char *ptr )
{ {

View File

@ -352,16 +352,20 @@ class Range
end end
def to_yaml( opts = {} ) def to_yaml( opts = {} )
YAML::quick_emit( nil, opts ) { |out| YAML::quick_emit( nil, opts ) { |out|
out << "!ruby/range " out << "!ruby/range '"
self.to_s.to_yaml(:Emitter => out) self.begin.to_yaml(:Emitter => out)
out << ( self.exclude_end? ? "..." : ".." )
self.end.to_yaml(:Emitter => out)
out << "'"
} }
end end
end end
YAML.add_ruby_type( 'range' ) { |type, val| YAML.add_ruby_type( 'range' ) { |type, val|
if String === val and val =~ /^(.*[^.])(\.{2,3})([^.].*)$/ inr = '(\w+|[+-]*\d+(?:\.\d+)?|"(?:[^\\"]|\\.)*")'
if String === val and val =~ /^#{inr}(\.{2,3})#{inr}$/
r1, rdots, r2 = $1, $2, $3 r1, rdots, r2 = $1, $2, $3
Range.new( YAML.try_implicit( r1 ), YAML.try_implicit( r2 ), rdots.length == 3 ) Range.new( YAML.load( "--- #{r1}" ), YAML.load( "--- #{r2}" ), rdots.length == 3 )
elsif Hash === val elsif Hash === val
Range.new( val['begin'], val['end'], val['exclude_end?'] ) Range.new( val['begin'], val['end'], val['exclude_end?'] )
else else