Skip to content

Commit 6d74a6b

Browse files
authored
feat: support core schema (#13)
Ref: https://yaml.org/spec/1.2/spec.html#schema/core/ - `null_scalar` - `boolean_scalar` - `integer_scalar` - `float_scalar` - `string_scalar`
1 parent 523a6d7 commit 6d74a6b

14 files changed

+27614
-23355
lines changed

README.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,15 @@ console.log(tree.rootNode.toString());
3737
// (block_mapping
3838
// (block_mapping_pair
3939
// key: (flow_node
40-
// (plain_scalar))
40+
// (plain_scalar
41+
// (string_scalar)))
4142
// value: (block_node
4243
// (anchor)
4344
// (block_sequence
4445
// (block_sequence_item
4546
// (flow_node
46-
// (plain_scalar))))))))))
47+
// (plain_scalar
48+
// (string_scalar)))))))))))
4749
```
4850

4951
## License

corpus/schema.txt

+354
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,354 @@
1+
================================================================================
2+
Example 10.4. !!null Examples
3+
================================================================================
4+
!!null null: value for null key
5+
key with null value: !!null null
6+
7+
--------------------------------------------------------------------------------
8+
9+
(stream
10+
(document
11+
(block_node
12+
(block_mapping
13+
(block_mapping_pair
14+
key: (flow_node
15+
(tag)
16+
(plain_scalar
17+
(null_scalar)))
18+
value: (flow_node
19+
(plain_scalar
20+
(string_scalar))))
21+
(block_mapping_pair
22+
key: (flow_node
23+
(plain_scalar
24+
(string_scalar)))
25+
value: (flow_node
26+
(tag)
27+
(plain_scalar
28+
(null_scalar))))))))
29+
30+
================================================================================
31+
Example 10.5. !!bool Examples
32+
================================================================================
33+
YAML is a superset of JSON: !!bool true
34+
Pluto is a planet: !!bool false
35+
36+
--------------------------------------------------------------------------------
37+
38+
(stream
39+
(document
40+
(block_node
41+
(block_mapping
42+
(block_mapping_pair
43+
key: (flow_node
44+
(plain_scalar
45+
(string_scalar)))
46+
value: (flow_node
47+
(tag)
48+
(plain_scalar
49+
(boolean_scalar))))
50+
(block_mapping_pair
51+
key: (flow_node
52+
(plain_scalar
53+
(string_scalar)))
54+
value: (flow_node
55+
(tag)
56+
(plain_scalar
57+
(boolean_scalar))))))))
58+
59+
================================================================================
60+
Example 10.6. !!int Examples
61+
================================================================================
62+
negative: !!int -12
63+
zero: !!int 0
64+
positive: !!int 34
65+
66+
--------------------------------------------------------------------------------
67+
68+
(stream
69+
(document
70+
(block_node
71+
(block_mapping
72+
(block_mapping_pair
73+
key: (flow_node
74+
(plain_scalar
75+
(string_scalar)))
76+
value: (flow_node
77+
(tag)
78+
(plain_scalar
79+
(integer_scalar))))
80+
(block_mapping_pair
81+
key: (flow_node
82+
(plain_scalar
83+
(string_scalar)))
84+
value: (flow_node
85+
(tag)
86+
(plain_scalar
87+
(integer_scalar))))
88+
(block_mapping_pair
89+
key: (flow_node
90+
(plain_scalar
91+
(string_scalar)))
92+
value: (flow_node
93+
(tag)
94+
(plain_scalar
95+
(integer_scalar))))))))
96+
97+
================================================================================
98+
Example 10.7. !!float Examples
99+
================================================================================
100+
negative: !!float -1
101+
zero: !!float 0
102+
positive: !!float 2.3e4
103+
infinity: !!float .inf
104+
not a number: !!float .nan
105+
106+
--------------------------------------------------------------------------------
107+
108+
(stream
109+
(document
110+
(block_node
111+
(block_mapping
112+
(block_mapping_pair
113+
key: (flow_node
114+
(plain_scalar
115+
(string_scalar)))
116+
value: (flow_node
117+
(tag)
118+
(plain_scalar
119+
(integer_scalar))))
120+
(block_mapping_pair
121+
key: (flow_node
122+
(plain_scalar
123+
(string_scalar)))
124+
value: (flow_node
125+
(tag)
126+
(plain_scalar
127+
(integer_scalar))))
128+
(block_mapping_pair
129+
key: (flow_node
130+
(plain_scalar
131+
(string_scalar)))
132+
value: (flow_node
133+
(tag)
134+
(plain_scalar
135+
(float_scalar))))
136+
(block_mapping_pair
137+
key: (flow_node
138+
(plain_scalar
139+
(string_scalar)))
140+
value: (flow_node
141+
(tag)
142+
(plain_scalar
143+
(float_scalar))))
144+
(block_mapping_pair
145+
key: (flow_node
146+
(plain_scalar
147+
(string_scalar)))
148+
value: (flow_node
149+
(tag)
150+
(plain_scalar
151+
(float_scalar))))))))
152+
153+
================================================================================
154+
Example 10.8. JSON Tag Resolution
155+
================================================================================
156+
A null: null
157+
Booleans: [ true, false ]
158+
Integers: [ 0, -0, 3, -19 ]
159+
Floats: [ 0., -0.0, 12e03, -2E+05 ]
160+
Invalid: [ True, Null, 0o7, 0x3A, +12.3 ]
161+
162+
--------------------------------------------------------------------------------
163+
164+
(stream
165+
(document
166+
(block_node
167+
(block_mapping
168+
(block_mapping_pair
169+
key: (flow_node
170+
(plain_scalar
171+
(string_scalar)))
172+
value: (flow_node
173+
(plain_scalar
174+
(null_scalar))))
175+
(block_mapping_pair
176+
key: (flow_node
177+
(plain_scalar
178+
(string_scalar)))
179+
value: (flow_node
180+
(flow_sequence
181+
(flow_node
182+
(plain_scalar
183+
(boolean_scalar)))
184+
(flow_node
185+
(plain_scalar
186+
(boolean_scalar))))))
187+
(block_mapping_pair
188+
key: (flow_node
189+
(plain_scalar
190+
(string_scalar)))
191+
value: (flow_node
192+
(flow_sequence
193+
(flow_node
194+
(plain_scalar
195+
(integer_scalar)))
196+
(flow_node
197+
(plain_scalar
198+
(integer_scalar)))
199+
(flow_node
200+
(plain_scalar
201+
(integer_scalar)))
202+
(flow_node
203+
(plain_scalar
204+
(integer_scalar))))))
205+
(block_mapping_pair
206+
key: (flow_node
207+
(plain_scalar
208+
(string_scalar)))
209+
value: (flow_node
210+
(flow_sequence
211+
(flow_node
212+
(plain_scalar
213+
(float_scalar)))
214+
(flow_node
215+
(plain_scalar
216+
(float_scalar)))
217+
(flow_node
218+
(plain_scalar
219+
(float_scalar)))
220+
(flow_node
221+
(plain_scalar
222+
(float_scalar))))))
223+
(block_mapping_pair
224+
key: (flow_node
225+
(plain_scalar
226+
(string_scalar)))
227+
value: (flow_node
228+
(flow_sequence
229+
(flow_node
230+
(plain_scalar
231+
(boolean_scalar)))
232+
(flow_node
233+
(plain_scalar
234+
(null_scalar)))
235+
(flow_node
236+
(plain_scalar
237+
(integer_scalar)))
238+
(flow_node
239+
(plain_scalar
240+
(integer_scalar)))
241+
(flow_node
242+
(plain_scalar
243+
(float_scalar))))))))))
244+
245+
================================================================================
246+
Example 10.9. Core Tag Resolution
247+
================================================================================
248+
A null: null
249+
Also a null: # Empty
250+
Not a null: ""
251+
Booleans: [ true, True, false, FALSE ]
252+
Integers: [ 0, 0o7, 0x3A, -19 ]
253+
Floats: [ 0., -0.0, .5, +12e03, -2E+05 ]
254+
Also floats: [ .inf, -.Inf, +.INF, .NAN ]
255+
256+
--------------------------------------------------------------------------------
257+
258+
(stream
259+
(document
260+
(block_node
261+
(block_mapping
262+
(block_mapping_pair
263+
key: (flow_node
264+
(plain_scalar
265+
(string_scalar)))
266+
value: (flow_node
267+
(plain_scalar
268+
(null_scalar))))
269+
(block_mapping_pair
270+
key: (flow_node
271+
(plain_scalar
272+
(string_scalar))))
273+
(comment)
274+
(block_mapping_pair
275+
key: (flow_node
276+
(plain_scalar
277+
(string_scalar)))
278+
value: (flow_node
279+
(double_quote_scalar)))
280+
(block_mapping_pair
281+
key: (flow_node
282+
(plain_scalar
283+
(string_scalar)))
284+
value: (flow_node
285+
(flow_sequence
286+
(flow_node
287+
(plain_scalar
288+
(boolean_scalar)))
289+
(flow_node
290+
(plain_scalar
291+
(boolean_scalar)))
292+
(flow_node
293+
(plain_scalar
294+
(boolean_scalar)))
295+
(flow_node
296+
(plain_scalar
297+
(boolean_scalar))))))
298+
(block_mapping_pair
299+
key: (flow_node
300+
(plain_scalar
301+
(string_scalar)))
302+
value: (flow_node
303+
(flow_sequence
304+
(flow_node
305+
(plain_scalar
306+
(integer_scalar)))
307+
(flow_node
308+
(plain_scalar
309+
(integer_scalar)))
310+
(flow_node
311+
(plain_scalar
312+
(integer_scalar)))
313+
(flow_node
314+
(plain_scalar
315+
(integer_scalar))))))
316+
(block_mapping_pair
317+
key: (flow_node
318+
(plain_scalar
319+
(string_scalar)))
320+
value: (flow_node
321+
(flow_sequence
322+
(flow_node
323+
(plain_scalar
324+
(float_scalar)))
325+
(flow_node
326+
(plain_scalar
327+
(float_scalar)))
328+
(flow_node
329+
(plain_scalar
330+
(float_scalar)))
331+
(flow_node
332+
(plain_scalar
333+
(float_scalar)))
334+
(flow_node
335+
(plain_scalar
336+
(float_scalar))))))
337+
(block_mapping_pair
338+
key: (flow_node
339+
(plain_scalar
340+
(string_scalar)))
341+
value: (flow_node
342+
(flow_sequence
343+
(flow_node
344+
(plain_scalar
345+
(float_scalar)))
346+
(flow_node
347+
(plain_scalar
348+
(float_scalar)))
349+
(flow_node
350+
(plain_scalar
351+
(float_scalar)))
352+
(flow_node
353+
(plain_scalar
354+
(float_scalar))))))))))

0 commit comments

Comments
 (0)