rubysl-syck 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,79 @@
1
+ /* A Bison parser, made by GNU Bison 1.875d. */
2
+
3
+ /* Skeleton parser for Yacc-like parsing with Bison,
4
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
5
+
6
+ This program is free software; you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation; either version 2, or (at your option)
9
+ any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330,
19
+ Boston, MA 02111-1307, USA. */
20
+
21
+ /* As a special exception, when this file is copied by Bison into a
22
+ Bison output file, you may use that output file without restriction.
23
+ This special exception was added by the Free Software Foundation
24
+ in version 1.24 of Bison. */
25
+
26
+ /* Tokens. */
27
+ #ifndef YYTOKENTYPE
28
+ # define YYTOKENTYPE
29
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
30
+ know about them. */
31
+ enum yytokentype {
32
+ YAML_ANCHOR = 258,
33
+ YAML_ALIAS = 259,
34
+ YAML_TRANSFER = 260,
35
+ YAML_TAGURI = 261,
36
+ YAML_ITRANSFER = 262,
37
+ YAML_WORD = 263,
38
+ YAML_PLAIN = 264,
39
+ YAML_BLOCK = 265,
40
+ YAML_DOCSEP = 266,
41
+ YAML_IOPEN = 267,
42
+ YAML_INDENT = 268,
43
+ YAML_IEND = 269
44
+ };
45
+ #endif
46
+ #define YAML_ANCHOR 258
47
+ #define YAML_ALIAS 259
48
+ #define YAML_TRANSFER 260
49
+ #define YAML_TAGURI 261
50
+ #define YAML_ITRANSFER 262
51
+ #define YAML_WORD 263
52
+ #define YAML_PLAIN 264
53
+ #define YAML_BLOCK 265
54
+ #define YAML_DOCSEP 266
55
+ #define YAML_IOPEN 267
56
+ #define YAML_INDENT 268
57
+ #define YAML_IEND 269
58
+
59
+
60
+
61
+
62
+ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
63
+ #line 35 "gram.y"
64
+ typedef union YYSTYPE {
65
+ SYMID nodeId;
66
+ SyckNode *nodeData;
67
+ char *name;
68
+ } YYSTYPE;
69
+ /* Line 1285 of yacc.c. */
70
+ #line 71 "gram.h"
71
+ # define yystype YYSTYPE /* obsolescent; will be withdrawn */
72
+ # define YYSTYPE_IS_DECLARED 1
73
+ # define YYSTYPE_IS_TRIVIAL 1
74
+ #endif
75
+
76
+
77
+
78
+
79
+
@@ -0,0 +1,174 @@
1
+ /*
2
+ * handler.c
3
+ *
4
+ * $Author: shyouhei $
5
+ * $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
6
+ *
7
+ * Copyright (C) 2003 why the lucky stiff
8
+ */
9
+
10
+ #include "ruby.h"
11
+ #include "syck.h"
12
+
13
+ SYMID
14
+ syck_hdlr_add_node( SyckParser *p, SyckNode *n )
15
+ {
16
+ SYMID id;
17
+
18
+ if ( ! n->id )
19
+ {
20
+ n->id = (p->handler)( p, n );
21
+ }
22
+ id = n->id;
23
+
24
+ if ( n->anchor == NULL )
25
+ {
26
+ syck_free_node( n );
27
+ }
28
+ return id;
29
+ }
30
+
31
+ SyckNode *
32
+ syck_hdlr_add_anchor( SyckParser *p, char *a, SyckNode *n )
33
+ {
34
+ SyckNode *ntmp = NULL;
35
+
36
+ n->anchor = a;
37
+ if ( p->bad_anchors != NULL )
38
+ {
39
+ SyckNode *bad;
40
+ if ( st_lookup( p->bad_anchors, (st_data_t)a, (st_data_t *)&bad ) )
41
+ {
42
+ if ( n->kind != syck_str_kind )
43
+ {
44
+ n->id = bad->id;
45
+ (p->handler)( p, n );
46
+ }
47
+ }
48
+ }
49
+ if ( p->anchors == NULL )
50
+ {
51
+ p->anchors = st_init_strtable();
52
+ }
53
+ if ( st_lookup( p->anchors, (st_data_t)a, (st_data_t *)&ntmp ) )
54
+ {
55
+ if ( ntmp != (void *)1 )
56
+ {
57
+ syck_free_node( ntmp );
58
+ }
59
+ }
60
+ st_insert( p->anchors, (st_data_t)a, (st_data_t)n );
61
+ return n;
62
+ }
63
+
64
+ void
65
+ syck_hdlr_remove_anchor( SyckParser *p, char *a )
66
+ {
67
+ char *atmp = a;
68
+ SyckNode *ntmp;
69
+ if ( p->anchors == NULL )
70
+ {
71
+ p->anchors = st_init_strtable();
72
+ }
73
+ if ( st_delete( p->anchors, (st_data_t *)&atmp, (st_data_t *)&ntmp ) )
74
+ {
75
+ if ( ntmp != (void *)1 )
76
+ {
77
+ syck_free_node( ntmp );
78
+ }
79
+ }
80
+ st_insert( p->anchors, (st_data_t)a, (st_data_t)1 );
81
+ }
82
+
83
+ SyckNode *
84
+ syck_hdlr_get_anchor( SyckParser *p, char *a )
85
+ {
86
+ SyckNode *n = NULL;
87
+
88
+ if ( p->anchors != NULL )
89
+ {
90
+ if ( st_lookup( p->anchors, (st_data_t)a, (st_data_t *)&n ) )
91
+ {
92
+ if ( n != (void *)1 )
93
+ {
94
+ S_FREE( a );
95
+ return n;
96
+ }
97
+ else
98
+ {
99
+ if ( p->bad_anchors == NULL )
100
+ {
101
+ p->bad_anchors = st_init_strtable();
102
+ }
103
+ if ( ! st_lookup( p->bad_anchors, (st_data_t)a, (st_data_t *)&n ) )
104
+ {
105
+ n = (p->bad_anchor_handler)( p, a );
106
+ st_insert( p->bad_anchors, (st_data_t)a, (st_data_t)n );
107
+ }
108
+ }
109
+ }
110
+ }
111
+
112
+ if ( n == NULL )
113
+ {
114
+ n = (p->bad_anchor_handler)( p, a );
115
+ }
116
+
117
+ if ( n->anchor )
118
+ {
119
+ S_FREE( a );
120
+ }
121
+ else
122
+ {
123
+ n->anchor = a;
124
+ }
125
+
126
+ return n;
127
+ }
128
+
129
+ void
130
+ syck_add_transfer( char *uri, SyckNode *n, int taguri )
131
+ {
132
+ if ( n->type_id != NULL )
133
+ {
134
+ S_FREE( n->type_id );
135
+ }
136
+
137
+ if ( taguri == 0 )
138
+ {
139
+ n->type_id = uri;
140
+ return;
141
+ }
142
+
143
+ n->type_id = syck_type_id_to_uri( uri );
144
+ S_FREE( uri );
145
+ }
146
+
147
+ char *
148
+ syck_xprivate( char *type_id, int type_len )
149
+ {
150
+ char *uri = S_ALLOC_N( char, type_len + 14 );
151
+ uri[0] = '\0';
152
+ strcat( uri, "x-private:" );
153
+ strncat( uri, type_id, type_len );
154
+ return uri;
155
+ }
156
+
157
+ char *
158
+ syck_taguri( char *domain, char *type_id, int type_len )
159
+ {
160
+ char *uri = S_ALLOC_N( char, strlen( domain ) + type_len + 14 );
161
+ uri[0] = '\0';
162
+ strcat( uri, "tag:" );
163
+ strcat( uri, domain );
164
+ strcat( uri, ":" );
165
+ strncat( uri, type_id, type_len );
166
+ return uri;
167
+ }
168
+
169
+ int
170
+ syck_try_implicit( SyckNode *n )
171
+ {
172
+ return 1;
173
+ }
174
+