astn-core 0.5.125 → 0.5.126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/implementation/manual/refiners/parse_tree/list_of_characters.js +2 -2
- package/dist/implementation/manual/refiners/parse_tree/token.d.ts +42 -0
- package/dist/implementation/manual/refiners/parse_tree/token.js +212 -0
- package/dist/implementation/manual/refiners/parse_tree/tokenizer_result.js +2 -2
- package/dist/implementation/manual/refiners/token/annotated_character.d.ts +15 -0
- package/dist/implementation/manual/refiners/token/annotated_character.js +410 -0
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@ import * as d_out from "../../../../interface/generated/liana/schemas/parse_tree
|
|
|
6
6
|
import * as d_in from "pareto-fountain-pen/interface/generated/liana/schemas/list_of_characters/data";
|
|
7
7
|
//dependencies
|
|
8
8
|
import * as r_annotated_characters from "../annotated_characters/text.js";
|
|
9
|
-
import * as r_tokenize from "
|
|
9
|
+
import * as r_tokenize from "../token/annotated_character.js";
|
|
10
10
|
import * as r_from_tokenizer_result from "./tokenizer_result.js";
|
|
11
11
|
export const Document = ($, abort, $p) => {
|
|
12
12
|
const ann_chars = r_annotated_characters.Annotated_Characters($, $p);
|
|
@@ -24,4 +24,4 @@ export const Document = ($, abort, $p) => {
|
|
|
24
24
|
on_dangling_item: null, //fixme: make this iterate_fully
|
|
25
25
|
});
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdF9vZl9jaGFyYWN0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL21hbnVhbC9yZWZpbmVycy9wYXJzZV90cmVlL2xpc3Rfb2ZfY2hhcmFjdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssR0FBRyxNQUFNLCtCQUErQixDQUFBO0FBQ3BELE9BQU8sU0FBUyxNQUFNLHFEQUFxRCxDQUFBO0FBRTNFLFlBQVk7QUFDWixPQUFPLEtBQUssVUFBVSxNQUFNLDhFQUE4RSxDQUFBO0FBQzFHLE9BQU8sS0FBSyxLQUFLLE1BQU0sa0VBQWtFLENBQUE7QUFDekYsT0FBTyxLQUFLLElBQUksTUFBTSwrRUFBK0UsQ0FBQTtBQUVyRyxjQUFjO0FBQ2QsT0FBTyxLQUFLLHNCQUFzQixNQUFNLGlDQUFpQyxDQUFBO0FBQ3pFLE9BQU8sS0FBSyxVQUFVLE1BQU0saUNBQWlDLENBQUE7QUFDN0QsT0FBTyxLQUFLLHVCQUF1QixNQUFNLHVCQUF1QixDQUFBO0FBYWhFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBd0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRyxFQUFFO0lBQzNELE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUFDLG9CQUFvQixDQUN6RCxDQUFDLEVBQ0QsRUFBRSxDQUNMLENBQUE7SUFDRCxPQUFPLFNBQVMsQ0FBQztRQUNiLElBQUksRUFBRSxTQUFTLENBQUMsVUFBVTtRQUMxQixRQUFRLEVBQUUsU0FBUyxDQUFDLEdBQUc7UUFDdkIsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsZ0NBQWdDO1FBQ25GLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FDdkIsUUFBUSxFQUNSLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDVCxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZCLENBQUMsRUFDRjtZQUNJLFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRztTQUM1QixDQUNKLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNULE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDeEIsQ0FBQyxDQUNMO1FBQ0QsZ0JBQWdCLEVBQUUsSUFBSSxFQUFDLGdDQUFnQztLQUMxRCxDQUFDLENBQUE7QUFDTixDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as p_ti from 'pareto-core/interface/transformer';
|
|
2
|
+
import * as p_i from 'pareto-core/interface/refiner';
|
|
3
|
+
import * as d_out from "../../../../interface/generated/liana/schemas/parse_tree/data.js";
|
|
4
|
+
import * as d_choice from "../../../../interface/generated/liana/schemas/deserialize_parse_tree/data.js";
|
|
5
|
+
import * as d_in from "../../../../interface/generated/liana/schemas/token/data.js";
|
|
6
|
+
import * as d_location from "../../../../interface/generated/liana/schemas/location/data.js";
|
|
7
|
+
export declare namespace interface_ {
|
|
8
|
+
type Document = p_i.Production<d_out.Document, d_choice.Parser_Error, d_in.Annotated_Token, d_location.Location>;
|
|
9
|
+
type Value = p_i.Production<d_out.Value, d_choice.Parser_Error, d_in.Annotated_Token, d_location.Location>;
|
|
10
|
+
type Guaranteed_Structural_Token = p_i.Production_With_Parameter<d_out.Structural_Token, d_choice.Parser_Error, d_in.Annotated_Token, d_location.Location, {
|
|
11
|
+
'token': d_in.Annotated_Token;
|
|
12
|
+
}>;
|
|
13
|
+
type Possible_Structural_Token = p_i.Production_With_Parameter<d_out.Structural_Token, d_choice.Parser_Error, d_in.Annotated_Token, d_location.Location, {
|
|
14
|
+
'expected token': d_choice.Expected;
|
|
15
|
+
}>;
|
|
16
|
+
type Text = p_i.Production_With_Parameter<d_out.Text, d_choice.Parser_Error, d_in.Annotated_Token, d_location.Location, {
|
|
17
|
+
'text': d_in.Annotated_Token.type_.text;
|
|
18
|
+
'token': d_in.Annotated_Token;
|
|
19
|
+
}>;
|
|
20
|
+
type Items = p_i.Production_With_Parameter<d_out.Items, d_choice.Parser_Error, d_in.Annotated_Token, d_location.Location, {
|
|
21
|
+
'end token': d_choice.Expected;
|
|
22
|
+
}>;
|
|
23
|
+
type Element = p_i.Production_With_Parameter<d_out.Items, d_choice.Parser_Error, d_in.Annotated_Token, d_location.Location, {
|
|
24
|
+
'end token': d_choice.Expected;
|
|
25
|
+
}>;
|
|
26
|
+
type ID_Value_Pairs = p_i.Production_With_Parameter<d_out.ID_Value_Pairs, d_choice.Parser_Error, d_in.Annotated_Token, d_location.Location, {
|
|
27
|
+
'end token': d_choice.Expected;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
export declare const create_missing_token: p_ti.Transformer_With_Parameter<d_choice.Parser_Error.expected, d_choice.Parser_Error, {
|
|
31
|
+
'end location': d_location.Location;
|
|
32
|
+
}>;
|
|
33
|
+
export declare const create_unexpected_token: p_ti.Transformer_With_Parameter<d_choice.Parser_Error.expected, d_choice.Parser_Error, {
|
|
34
|
+
'found': d_in.Annotated_Token;
|
|
35
|
+
}>;
|
|
36
|
+
export declare const Document: interface_.Document;
|
|
37
|
+
export declare const Value: interface_.Value;
|
|
38
|
+
export declare const Guaranteed_Structural_Token: interface_.Guaranteed_Structural_Token;
|
|
39
|
+
export declare const Possible_Structural_Token: interface_.Possible_Structural_Token;
|
|
40
|
+
export declare const Text: interface_.Text;
|
|
41
|
+
export declare const Items: interface_.Items;
|
|
42
|
+
export declare const ID_Value_Pairs: interface_.ID_Value_Pairs;
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import * as p_ from 'pareto-core/implementation/refiner';
|
|
2
|
+
import * as p_ti from 'pareto-core/interface/transformer';
|
|
3
|
+
import * as p_i from 'pareto-core/interface/refiner';
|
|
4
|
+
import p_unreachable_code_path from 'pareto-core/implementation/transformer/specials/unreachable_code_path';
|
|
5
|
+
//data types
|
|
6
|
+
import * as d_out from "../../../../interface/generated/liana/schemas/parse_tree/data.js";
|
|
7
|
+
import * as d_choice from "../../../../interface/generated/liana/schemas/deserialize_parse_tree/data.js";
|
|
8
|
+
import * as d_in from "../../../../interface/generated/liana/schemas/token/data.js";
|
|
9
|
+
import * as d_location from "../../../../interface/generated/liana/schemas/location/data.js";
|
|
10
|
+
export const create_missing_token = ($, $p) => ({
|
|
11
|
+
'expected': $,
|
|
12
|
+
'cause': ['missing token', {
|
|
13
|
+
'end': $p['end location'],
|
|
14
|
+
}]
|
|
15
|
+
});
|
|
16
|
+
export const create_unexpected_token = ($, $p) => ({
|
|
17
|
+
'expected': $,
|
|
18
|
+
'cause': ['unexpected token', {
|
|
19
|
+
'found': $p.found,
|
|
20
|
+
}]
|
|
21
|
+
});
|
|
22
|
+
export const Document = (iterator, abort) => ({
|
|
23
|
+
'header': iterator.peek(($) => p_.literal.not_set(), ($) => $.type[0] === '!' //header token
|
|
24
|
+
? iterator.consume(() => p_unreachable_code_path("peeked (with 'expected')"), ($) => p_.literal.set({
|
|
25
|
+
'!': Guaranteed_Structural_Token(iterator, abort, { 'token': $ }),
|
|
26
|
+
'value': Value(iterator, abort)
|
|
27
|
+
}))
|
|
28
|
+
: p_.literal.not_set()),
|
|
29
|
+
'content': Value(iterator, abort)
|
|
30
|
+
});
|
|
31
|
+
export const Value = (iterator, abort) => ({
|
|
32
|
+
'type': iterator.peek_with_expectation(p_.literal.list([
|
|
33
|
+
['any value', null]
|
|
34
|
+
]), ($, expected) => abort(create_missing_token(expected, { 'end location': $ })), ($, expected) => {
|
|
35
|
+
const token = $;
|
|
36
|
+
return p_.from.state($.type).decide(($) => {
|
|
37
|
+
switch ($[0]) {
|
|
38
|
+
case 'text': return p_.option($, ($) => ['concrete',
|
|
39
|
+
['text', Text(iterator, abort, { 'token': token, 'text': $ })]
|
|
40
|
+
]);
|
|
41
|
+
case '{': return p_.option($, ($) => ['concrete', ['dictionary', {
|
|
42
|
+
'{': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
43
|
+
'entries': ID_Value_Pairs(iterator, abort, { 'end token': ['}', null] }),
|
|
44
|
+
'}': Possible_Structural_Token(iterator, abort, { 'expected token': ['}', null] }),
|
|
45
|
+
}]]);
|
|
46
|
+
case '(': return p_.option($, ($) => ['concrete', ['group', ['verbose', {
|
|
47
|
+
'(': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
48
|
+
'properties': ID_Value_Pairs(iterator, abort, { 'end token': [')', null] }),
|
|
49
|
+
')': Possible_Structural_Token(iterator, abort, { 'expected token': [')', null] })
|
|
50
|
+
}]]]);
|
|
51
|
+
case '[': return p_.option($, ($) => ['concrete', ['list', {
|
|
52
|
+
'[': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
53
|
+
'items': Items(iterator, abort, { 'end token': [']', null] }),
|
|
54
|
+
']': Possible_Structural_Token(iterator, abort, { 'expected token': [']', null] })
|
|
55
|
+
}]]);
|
|
56
|
+
case '<': return p_.option($, ($) => ['concrete', ['group', ['concise', {
|
|
57
|
+
'<': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
58
|
+
'properties': Items(iterator, abort, { 'end token': ['>', null] }),
|
|
59
|
+
'>': Possible_Structural_Token(iterator, abort, { 'expected token': ['>', null] })
|
|
60
|
+
}]]]);
|
|
61
|
+
case '@': return p_.option($, ($) => ['include', {
|
|
62
|
+
'@': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
63
|
+
'path': iterator.peek_with_expectation(p_.literal.list([
|
|
64
|
+
['a text value', null]
|
|
65
|
+
]), (end_info, expected) => abort(create_missing_token(expected, { 'end location': end_info })), ($, expected) => $.type[0] === 'text'
|
|
66
|
+
? Text(iterator, abort, { 'token': $, 'text': $.type[1] })
|
|
67
|
+
: abort(create_unexpected_token(expected, { 'found': $ })))
|
|
68
|
+
}]);
|
|
69
|
+
case '~': return p_.option($, ($) => ['concrete', ['nothing', {
|
|
70
|
+
'~': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
71
|
+
}]]);
|
|
72
|
+
case '|': return p_.option($, ($) => ['concrete', ['state', {
|
|
73
|
+
'|': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
74
|
+
'status': iterator.peek_with_expectation(p_.literal.list([
|
|
75
|
+
['a text value', null],
|
|
76
|
+
['#', null]
|
|
77
|
+
]), ($, expected) => abort(create_missing_token(expected, { 'end location': $ })), ($, expected) => {
|
|
78
|
+
const token = $;
|
|
79
|
+
return p_.from.state($.type).decide(($) => {
|
|
80
|
+
switch ($[0]) {
|
|
81
|
+
case 'text': return p_.option($, ($) => ['set', {
|
|
82
|
+
'option': Text(iterator, abort, { 'token': token, 'text': $ }),
|
|
83
|
+
'value': Value(iterator, abort)
|
|
84
|
+
}]);
|
|
85
|
+
case '#': return p_.option($, ($) => ['missing', {
|
|
86
|
+
'#': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
87
|
+
}]);
|
|
88
|
+
default: return abort(create_unexpected_token(expected, { 'found': token }));
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
})
|
|
92
|
+
}]]);
|
|
93
|
+
case '_': return p_.option($, ($) => ['concrete', ['optional', ['not set', {
|
|
94
|
+
'_': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
95
|
+
}]]]);
|
|
96
|
+
case '*': return p_.option($, ($) => ['concrete', ['optional', ['set', {
|
|
97
|
+
'*': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
98
|
+
'value': Value(iterator, abort)
|
|
99
|
+
}]]]);
|
|
100
|
+
case '#': return p_.option($, ($) => ['missing', {
|
|
101
|
+
'#': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
102
|
+
}]);
|
|
103
|
+
//unexpected tokens
|
|
104
|
+
// case '!': return p_.option($, ($) => iterator.unexpected_token(token, p_.literal.list([
|
|
105
|
+
// ['any value', null]
|
|
106
|
+
// ])))
|
|
107
|
+
// case ':': return p_.option($, ($) => iterator.unexpected_token(token, p_.literal.list([
|
|
108
|
+
// ['any value', null]
|
|
109
|
+
// ])))
|
|
110
|
+
// case ')': return p_.option($, ($) => iterator.unexpected_token(token, p_.literal.list([
|
|
111
|
+
// ['any value', null]
|
|
112
|
+
// ])))
|
|
113
|
+
// case '>': return p_.option($, ($) => iterator.unexpected_token(token, p_.literal.list([
|
|
114
|
+
// ['any value', null]
|
|
115
|
+
// ])))
|
|
116
|
+
// case ']': return p_.option($, ($) => iterator.unexpected_token(token, p_.literal.list([
|
|
117
|
+
// ['any value', null]
|
|
118
|
+
// ])))
|
|
119
|
+
// case '}': return p_.option($, ($) => iterator.unexpected_token(token, p_.literal.list([
|
|
120
|
+
// ['any value', null]
|
|
121
|
+
// ])))
|
|
122
|
+
default: return abort(create_unexpected_token(expected, { 'found': token }));
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
export const Guaranteed_Structural_Token = (iterator, abort, $p) => {
|
|
128
|
+
iterator.consume(() => p_unreachable_code_path("guaranteed"), () => null); //make this a 'discard' operation
|
|
129
|
+
return {
|
|
130
|
+
'trailing trivia': $p.token['trailing trivia'],
|
|
131
|
+
'range': {
|
|
132
|
+
'start': $p.token['start'],
|
|
133
|
+
'end': $p.token['end']
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
export const Possible_Structural_Token = (iterator, abort, $p) => iterator.peek_with_expectation(p_.literal.list([
|
|
138
|
+
$p['expected token']
|
|
139
|
+
]), ($, expected) => abort(create_missing_token(expected, { 'end location': $ })), ($, expected) => {
|
|
140
|
+
const token = $;
|
|
141
|
+
if ($.type[0] !== $p['expected token'][0]) {
|
|
142
|
+
return abort(create_unexpected_token(expected, { 'found': token }));
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
return iterator.consume(//discard
|
|
146
|
+
() => p_unreachable_code_path("peeked (with 'expected')"), () => ({
|
|
147
|
+
'trailing trivia': token['trailing trivia'],
|
|
148
|
+
'range': {
|
|
149
|
+
'start': token['start'],
|
|
150
|
+
'end': token['end']
|
|
151
|
+
}
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
export const Text = (iterator, abort, $p) => {
|
|
156
|
+
return iterator.consume(() => p_unreachable_code_path("guaranteed (it has a token as parameter)"), ($) => ({
|
|
157
|
+
'range': {
|
|
158
|
+
'start': $['start'],
|
|
159
|
+
'end': $['end']
|
|
160
|
+
},
|
|
161
|
+
'token': $p.text,
|
|
162
|
+
'trailing trivia': $['trailing trivia'],
|
|
163
|
+
}));
|
|
164
|
+
};
|
|
165
|
+
export const Items = (iterator, abort, $p) => iterator.build_list({
|
|
166
|
+
has_more_items: (current_token) => current_token.type[0] !== $p['end token'][0],
|
|
167
|
+
handle: () => iterator.peek(//for the proper error message (any value or end token) we peek instead of processing the token directly
|
|
168
|
+
($) => abort(create_missing_token(p_.literal.list([
|
|
169
|
+
['any value', null],
|
|
170
|
+
$p['end token']
|
|
171
|
+
]), { 'end location': $ })), ($) => ({
|
|
172
|
+
'value': Value(iterator, abort)
|
|
173
|
+
})),
|
|
174
|
+
on_no_progression: () => p_unreachable_code_path("'handle' is expected to always consume at least one token, so this should never happen"),
|
|
175
|
+
});
|
|
176
|
+
export const ID_Value_Pairs = (iterator, abort, $p) => iterator.build_list({
|
|
177
|
+
has_more_items: ($) => $.type[0] !== $p['end token'][0],
|
|
178
|
+
handle: () => ({
|
|
179
|
+
'id': iterator.peek(//to get a better error message (a text value or end token) we peek instead of processing the Text token directly
|
|
180
|
+
() => p_unreachable_code_path("has more items is true"), ($) => $.type[0] === 'text'
|
|
181
|
+
? Text(iterator, abort, {
|
|
182
|
+
'token': $,
|
|
183
|
+
'text': $.type[1]
|
|
184
|
+
})
|
|
185
|
+
: abort(create_unexpected_token(p_.literal.list([
|
|
186
|
+
['a text value', null],
|
|
187
|
+
$p['end token'],
|
|
188
|
+
]), { 'found': $ }))),
|
|
189
|
+
'assignment': iterator.peek_with_expectation(p_.literal.list([
|
|
190
|
+
['a text value', null],
|
|
191
|
+
[':', null],
|
|
192
|
+
$p['end token']
|
|
193
|
+
]), ($, expected) => abort(create_missing_token(expected, { 'end location': $ })), ($, expected) => {
|
|
194
|
+
const token = $;
|
|
195
|
+
return p_.from.state($.type).decide(($) => {
|
|
196
|
+
switch ($[0]) {
|
|
197
|
+
case 'text': return p_.option($, ($) => p_.literal.not_set());
|
|
198
|
+
case ':': return p_.option($, ($) => p_.literal.set({
|
|
199
|
+
':': Guaranteed_Structural_Token(iterator, abort, { 'token': token }),
|
|
200
|
+
'value': p_.literal.set(Value(iterator, abort)) //FIXME determine if it is set... if the next token is a text, we will need to do an extra lookahead if there is a colon
|
|
201
|
+
}));
|
|
202
|
+
default: return $[0] === $p['end token'][0]
|
|
203
|
+
? p_.literal.not_set()
|
|
204
|
+
: abort(create_unexpected_token(expected, { 'found': token }));
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}),
|
|
208
|
+
// ',': p_.literal.not_set() //FIXME implement optional comma (or keep it as 'whitespace' but then remove this property)
|
|
209
|
+
}),
|
|
210
|
+
on_no_progression: () => p_unreachable_code_path("'handle' is expected to always consume at least one token, so this should never happen"),
|
|
211
|
+
});
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW1wbGVtZW50YXRpb24vbWFudWFsL3JlZmluZXJzL3BhcnNlX3RyZWUvdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUN4RCxPQUFPLEtBQUssSUFBSSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3pELE9BQU8sS0FBSyxHQUFHLE1BQU0sK0JBQStCLENBQUE7QUFDcEQsT0FBTyx1QkFBdUIsTUFBTSx1RUFBdUUsQ0FBQTtBQUUzRyxZQUFZO0FBQ1osT0FBTyxLQUFLLEtBQUssTUFBTSxrRUFBa0UsQ0FBQTtBQUN6RixPQUFPLEtBQUssUUFBUSxNQUFNLDhFQUE4RSxDQUFBO0FBQ3hHLE9BQU8sS0FBSyxJQUFJLE1BQU0sNkRBQTZELENBQUE7QUFDbkYsT0FBTyxLQUFLLFVBQVUsTUFBTSxnRUFBZ0UsQ0FBQTtBQWtGNUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBTTdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNaLFVBQVUsRUFBRSxDQUFDO0lBQ2IsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFO1lBQ3ZCLEtBQUssRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDO1NBQzVCLENBQUM7Q0FDTCxDQUFDLENBQUE7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FNaEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1osVUFBVSxFQUFFLENBQUM7SUFDYixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRTtZQUMxQixPQUFPLEVBQUUsRUFBRSxDQUFDLEtBQUs7U0FDcEIsQ0FBQztDQUNMLENBQUMsQ0FBQTtBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBd0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxD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
|
|
@@ -5,11 +5,11 @@ import * as d_out from "../../../../interface/generated/liana/schemas/parse_tree
|
|
|
5
5
|
import * as d_in from "../../../../interface/generated/liana/schemas/token/data.js";
|
|
6
6
|
import * as d_location from "../../../../interface/generated/liana/schemas/location/data.js";
|
|
7
7
|
//dependencies
|
|
8
|
-
import * as pr_authoring_parse_tree from "
|
|
8
|
+
import * as pr_authoring_parse_tree from "./token.js";
|
|
9
9
|
export const Document = ($, abort) => p_iterate({
|
|
10
10
|
list: $.tokens,
|
|
11
11
|
end_info: $.end,
|
|
12
12
|
assign: (iterator) => pr_authoring_parse_tree.Document(iterator, abort),
|
|
13
13
|
on_dangling_item: null, //FIX enable checking for too many tokens
|
|
14
14
|
});
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5pemVyX3Jlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsZW1lbnRhdGlvbi9tYW51YWwvcmVmaW5lcnMvcGFyc2VfdHJlZS90b2tlbml6ZXJfcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sK0JBQStCLENBQUE7QUFDcEQsT0FBTyxTQUFTLE1BQU0scURBQXFELENBQUE7QUFLM0UsT0FBTyxLQUFLLFVBQVUsTUFBTSw4RUFBOEUsQ0FBQTtBQUMxRyxPQUFPLEtBQUssS0FBSyxNQUFNLGtFQUFrRSxDQUFBO0FBQ3pGLE9BQU8sS0FBSyxJQUFJLE1BQU0sNkRBQTZELENBQUE7QUFDbkYsT0FBTyxLQUFLLFVBQVUsTUFBTSxnRUFBZ0UsQ0FBQTtBQUc1RixjQUFjO0FBQ2QsT0FBTyxLQUFLLHVCQUF1QixNQUFNLFlBQVksQ0FBQTtBQWNyRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQXdCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsU0FBUyxDQUtsRTtJQUNFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNkLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRztJQUNmLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUNsRCxRQUFRLEVBQ1IsS0FBSyxDQUNSO0lBQ0QsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLHlDQUF5QztDQUNwRSxDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as p_i from 'pareto-core/interface/refiner';
|
|
2
|
+
import * as d_in from "../../../../interface/data/annotated_characters.js";
|
|
3
|
+
import * as d_out from "../../../../interface/generated/liana/schemas/token/data.js";
|
|
4
|
+
import * as d_function from "../../../../interface/generated/liana/schemas/deserialize_parse_tree/data.js";
|
|
5
|
+
import * as d_location from "../../../../interface/generated/liana/schemas/location/data.js";
|
|
6
|
+
export declare const Whitespace: p_i.Production_Without_Error<d_out.Whitespace, d_in.Annotated_Character, d_location.Location>;
|
|
7
|
+
export declare const Trivia: p_i.Production<d_out.Trivia, d_function.Lexer_Error, d_in.Annotated_Character, d_location.Location>;
|
|
8
|
+
export declare const Delimited_Text: p_i.Production_With_Parameter<string, d_function.Lexer_Error, d_in.Annotated_Character, d_location.Location, {
|
|
9
|
+
'allow newlines': boolean;
|
|
10
|
+
'end character': number;
|
|
11
|
+
'start character': d_in.Annotated_Character;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const Tokenizer_Result: p_i.Production_With_Parameter<d_out.Tokenizer_Result, d_function.Lexer_Error, d_in.Annotated_Character, d_location.Location, {
|
|
14
|
+
'end info': d_location.Location;
|
|
15
|
+
}>;
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
import * as p_ from 'pareto-core/implementation/refiner';
|
|
2
|
+
import * as p_i from 'pareto-core/interface/refiner';
|
|
3
|
+
import * as p_t from 'pareto-core/implementation/transformer';
|
|
4
|
+
import p_unreachable_code_path from 'pareto-core/implementation/transformer/specials/unreachable_code_path';
|
|
5
|
+
import p_variables from 'pareto-core/implementation/transformer/specials/variables';
|
|
6
|
+
import p_text_from_list from 'pareto-core/implementation/transformer/specials/text_from_list';
|
|
7
|
+
//data types
|
|
8
|
+
import * as d_in from "../../../../interface/data/annotated_characters.js";
|
|
9
|
+
import * as d_out from "../../../../interface/generated/liana/schemas/token/data.js";
|
|
10
|
+
import * as d_function from "../../../../interface/generated/liana/schemas/deserialize_parse_tree/data.js";
|
|
11
|
+
import * as d_location from "../../../../interface/generated/liana/schemas/location/data.js";
|
|
12
|
+
import * as d_temp_location from "../../../../interface/generated/liana/schemas/location/data.js";
|
|
13
|
+
import * as d_loc from "pareto-fountain-pen/interface/generated/liana/schemas/list_of_characters/data";
|
|
14
|
+
//dependencies
|
|
15
|
+
const create_range = (iterator, $p) => ({
|
|
16
|
+
'start': $p['start character'].location,
|
|
17
|
+
'end': iterator.peek(($) => $, ($) => $.location)
|
|
18
|
+
});
|
|
19
|
+
export const Whitespace = (iterator) => {
|
|
20
|
+
const is_whitespace_character = ($) => {
|
|
21
|
+
switch ($.code) {
|
|
22
|
+
case 0x09: // \t
|
|
23
|
+
return true;
|
|
24
|
+
case 0x0A: // \n
|
|
25
|
+
return true;
|
|
26
|
+
case 0x0D: // \r
|
|
27
|
+
return true;
|
|
28
|
+
case 0x20: // space
|
|
29
|
+
return true;
|
|
30
|
+
case 0x2C: // ,
|
|
31
|
+
return true;
|
|
32
|
+
default:
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
return iterator.peek(() => p_.literal.not_set(), ($) => {
|
|
37
|
+
if (!is_whitespace_character($)) {
|
|
38
|
+
return p_.literal.not_set();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const start_character = $;
|
|
42
|
+
return p_.literal.set({
|
|
43
|
+
'value': p_text_from_list(iterator.build_list({
|
|
44
|
+
has_more_items: ($) => is_whitespace_character($),
|
|
45
|
+
handle: () => iterator.consume(() => p_unreachable_code_path("we checked that there is a next character, so this should never happen"), ($) => $.code),
|
|
46
|
+
on_no_progression: () => p_unreachable_code_path("'handle' directly consumes the next character, so this should never happen"),
|
|
47
|
+
}), ($) => $),
|
|
48
|
+
'range': create_range(iterator, {
|
|
49
|
+
'start character': start_character
|
|
50
|
+
}),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
export const Trivia = (iterator, abort) => ({
|
|
56
|
+
'leading whitespace': Whitespace(iterator),
|
|
57
|
+
'comments': iterator.build_list({
|
|
58
|
+
has_more_items: (current) => {
|
|
59
|
+
// slash followed by either slash or asterisk
|
|
60
|
+
return current.code === 0x2F
|
|
61
|
+
&& iterator.peek_ahead(1, () => false, ($) => $.code === 0x2F || $.code === 0x2A);
|
|
62
|
+
},
|
|
63
|
+
handle: () => {
|
|
64
|
+
return iterator.consume(// discard the first slash
|
|
65
|
+
() => p_unreachable_code_path("has_more_items -> true"), ($) => iterator.peek(() => p_unreachable_code_path("has_more_items -> true"), ($) => {
|
|
66
|
+
switch ($.code) {
|
|
67
|
+
case 0x2F: // /
|
|
68
|
+
return iterator.consume(// discard the second /
|
|
69
|
+
() => p_unreachable_code_path("has_more_items -> true"), () => ({
|
|
70
|
+
'type': ['line', null],
|
|
71
|
+
'content': p_text_from_list(iterator.build_list({
|
|
72
|
+
has_more_items: ($) => $.code !== 0x0A && $.code !== 0x0D, // not a line feed or carriage return
|
|
73
|
+
handle: () => iterator.consume(() => p_unreachable_code_path("has_more_items -> true"), ($) => $.code),
|
|
74
|
+
on_no_progression: () => p_unreachable_code_path("'handle' directly consumes the next character, so this should never happen"),
|
|
75
|
+
}), ($) => $),
|
|
76
|
+
'range': create_range(iterator, { 'start character': $ }),
|
|
77
|
+
'trailing whitespace': Whitespace(iterator)
|
|
78
|
+
}));
|
|
79
|
+
case 0x2A: { // *
|
|
80
|
+
return iterator.consume(// discard the asterisk
|
|
81
|
+
() => p_unreachable_code_path("has_more_items -> true"), () => ({
|
|
82
|
+
'type': ['block', null],
|
|
83
|
+
'content': p_variables(() => {
|
|
84
|
+
const $p_temp_content = p_text_from_list(iterator.build_list({
|
|
85
|
+
has_more_items: ($) => {
|
|
86
|
+
// not an asterisk followed by a solidus (end of block comment)
|
|
87
|
+
return $.code !== 0x2A
|
|
88
|
+
|| iterator.peek_ahead(1, () => true, // the asterisk needs to be processed, so, yes, there are more items
|
|
89
|
+
($) => $.code !== 0x2F);
|
|
90
|
+
},
|
|
91
|
+
handle: () => iterator.consume(() => p_unreachable_code_path("has_more_items -> true"), ($) => $.code),
|
|
92
|
+
on_no_progression: () => p_unreachable_code_path("'handle' directly consumes the next character, so this should never happen"),
|
|
93
|
+
}), ($) => $);
|
|
94
|
+
iterator.consume(// discard the asterisk
|
|
95
|
+
($) => abort({
|
|
96
|
+
'expected': ['block comment termination', null],
|
|
97
|
+
'range': {
|
|
98
|
+
'start': $,
|
|
99
|
+
'end': $,
|
|
100
|
+
}
|
|
101
|
+
}), ($) => $.code === 0x2A
|
|
102
|
+
? null
|
|
103
|
+
: abort({
|
|
104
|
+
'expected': ['block comment termination', null],
|
|
105
|
+
'range': {
|
|
106
|
+
'start': $.location,
|
|
107
|
+
'end': $.location,
|
|
108
|
+
}
|
|
109
|
+
}));
|
|
110
|
+
iterator.consume(// discard the solidus
|
|
111
|
+
($) => abort({
|
|
112
|
+
'expected': ['block comment termination', null],
|
|
113
|
+
'range': {
|
|
114
|
+
'start': $,
|
|
115
|
+
'end': $,
|
|
116
|
+
}
|
|
117
|
+
}), ($) => $.code === 0x2F
|
|
118
|
+
? null
|
|
119
|
+
: abort({
|
|
120
|
+
'expected': ['block comment termination', null],
|
|
121
|
+
'range': {
|
|
122
|
+
'start': $.location,
|
|
123
|
+
'end': $.location,
|
|
124
|
+
}
|
|
125
|
+
}));
|
|
126
|
+
return $p_temp_content;
|
|
127
|
+
}),
|
|
128
|
+
'range': create_range(iterator, { 'start character': $ }),
|
|
129
|
+
'trailing whitespace': Whitespace(iterator)
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
default: return p_unreachable_code_path("we checked in has_more_items that the next character is either a * or a /, so this should never happen");
|
|
133
|
+
}
|
|
134
|
+
}));
|
|
135
|
+
},
|
|
136
|
+
on_no_progression: () => p_unreachable_code_path("'handle' directly consumes the next character, so this should never happen"),
|
|
137
|
+
}),
|
|
138
|
+
});
|
|
139
|
+
export const Delimited_Text = (iterator, abort, $p) => {
|
|
140
|
+
const $p_content = p_text_from_list(iterator.build_list({
|
|
141
|
+
has_more_items: ($) => $.code !== $p['end character'],
|
|
142
|
+
handle: () => iterator.consume(() => p_unreachable_code_path("has_more_items -> true"), ($) => {
|
|
143
|
+
const Character = {
|
|
144
|
+
backspace: 0x08, // \b
|
|
145
|
+
form_feed: 0x0C, // \f
|
|
146
|
+
tab: 0x09, // \t
|
|
147
|
+
line_feed: 0x0A, // \n
|
|
148
|
+
carriage_return: 0x0D, // \r
|
|
149
|
+
quotation_mark: 0x22, // "
|
|
150
|
+
backtick: 0x60, // `
|
|
151
|
+
apostrophe: 0x27, // '
|
|
152
|
+
reverse_solidus: 0x5C, // \
|
|
153
|
+
solidus: 0x2F, // /
|
|
154
|
+
a: 0x61, // a
|
|
155
|
+
b: 0x62, // b
|
|
156
|
+
f: 0x66, // f
|
|
157
|
+
n: 0x6E, // n
|
|
158
|
+
r: 0x72, // r
|
|
159
|
+
t: 0x74, // t
|
|
160
|
+
u: 0x75, // u
|
|
161
|
+
A: 0x41, // A
|
|
162
|
+
F: 0x46, // F
|
|
163
|
+
};
|
|
164
|
+
switch ($.code) {
|
|
165
|
+
case Character.line_feed: return $p['allow newlines']
|
|
166
|
+
? $.code
|
|
167
|
+
: abort({
|
|
168
|
+
'expected': ['no end of line in text', null],
|
|
169
|
+
'range': create_range(iterator, { 'start character': $p['start character'] }),
|
|
170
|
+
});
|
|
171
|
+
case Character.carriage_return: return $p['allow newlines']
|
|
172
|
+
? $.code
|
|
173
|
+
: abort({
|
|
174
|
+
'expected': ['no end of line in text', null],
|
|
175
|
+
'range': create_range(iterator, { 'start character': $p['start character'] }),
|
|
176
|
+
});
|
|
177
|
+
case Character.reverse_solidus: return iterator.consume(($) => abort({
|
|
178
|
+
'range': create_range(iterator, { 'start character': $p['start character'] }),
|
|
179
|
+
'expected': ['escape character', { 'found': p_.literal.not_set() }]
|
|
180
|
+
}), ($) => {
|
|
181
|
+
switch ($.code) {
|
|
182
|
+
case Character.quotation_mark: return Character.quotation_mark;
|
|
183
|
+
case Character.apostrophe: return Character.apostrophe;
|
|
184
|
+
case Character.backtick: return Character.backtick;
|
|
185
|
+
case Character.reverse_solidus: return Character.reverse_solidus;
|
|
186
|
+
case Character.solidus: return Character.solidus;
|
|
187
|
+
case Character.b: return Character.backspace;
|
|
188
|
+
case Character.f: return Character.form_feed;
|
|
189
|
+
case Character.n: return Character.line_feed;
|
|
190
|
+
case Character.r: return Character.carriage_return;
|
|
191
|
+
case Character.t: return Character.tab;
|
|
192
|
+
case Character.u:
|
|
193
|
+
const r_hexadecimal = ($, abort) => {
|
|
194
|
+
const characters = $;
|
|
195
|
+
let result = 0;
|
|
196
|
+
let isNegative = false;
|
|
197
|
+
let startIndex = 0;
|
|
198
|
+
// Check for empty string
|
|
199
|
+
if (p_t.from.list(characters).amount_of_items() === 0) {
|
|
200
|
+
abort("empty string is not a valid hexadecimal number");
|
|
201
|
+
}
|
|
202
|
+
const get_character_at = (index) => {
|
|
203
|
+
return characters.__deprecated_get_item_at(index, {
|
|
204
|
+
out_of_bounds: () => p_unreachable_code_path("this function is only called with valid indices, so this should never happen"),
|
|
205
|
+
});
|
|
206
|
+
};
|
|
207
|
+
// Check for negative sign
|
|
208
|
+
if (p_t.from.list(characters).amount_of_items() > 0 && get_character_at(0) === 45) { // '-'
|
|
209
|
+
isNegative = true;
|
|
210
|
+
startIndex = 1;
|
|
211
|
+
}
|
|
212
|
+
// Check for "0x" prefix - REQUIRE it for hex
|
|
213
|
+
if (p_t.from.list(characters).amount_of_items() <= startIndex + 1 ||
|
|
214
|
+
get_character_at(startIndex) !== 48 || // '0'
|
|
215
|
+
get_character_at(startIndex + 1) !== 120) { // 'x'
|
|
216
|
+
abort("Hexadecimal number must have '0x' prefix");
|
|
217
|
+
}
|
|
218
|
+
startIndex += 2;
|
|
219
|
+
// Check if there are digits after the prefix
|
|
220
|
+
if (startIndex >= p_t.from.list(characters).amount_of_items()) {
|
|
221
|
+
abort("Hexadecimal number must have digits after '0x' prefix");
|
|
222
|
+
}
|
|
223
|
+
// Parse hex digits from left to right
|
|
224
|
+
for (let i = startIndex; i < p_t.from.list(characters).amount_of_items(); i++) {
|
|
225
|
+
const charCode = get_character_at(i);
|
|
226
|
+
let digit;
|
|
227
|
+
// Check if character is a hex digit
|
|
228
|
+
if (charCode >= 48 && charCode <= 57) { // '0'-'9'
|
|
229
|
+
digit = charCode - 48;
|
|
230
|
+
}
|
|
231
|
+
else if (charCode >= 65 && charCode <= 70) { // 'A'-'F'
|
|
232
|
+
digit = charCode - 65 + 10;
|
|
233
|
+
}
|
|
234
|
+
else if (charCode >= 97 && charCode <= 102) { // 'a'-'f'
|
|
235
|
+
digit = charCode - 97 + 10;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
// Invalid character
|
|
239
|
+
return abort("Invalid character in hexadecimal string");
|
|
240
|
+
}
|
|
241
|
+
result = result * 16 + digit;
|
|
242
|
+
}
|
|
243
|
+
return isNegative ? -result : result;
|
|
244
|
+
};
|
|
245
|
+
const consume_char = () => iterator.consume(($) => abort({
|
|
246
|
+
'range': create_range(iterator, { 'start character': $p['start character'] }),
|
|
247
|
+
'expected': ['unicode character', { 'found': p_.literal.not_set() }]
|
|
248
|
+
}), ($) => $.code);
|
|
249
|
+
return r_hexadecimal(p_.literal.list([
|
|
250
|
+
consume_char(),
|
|
251
|
+
consume_char(),
|
|
252
|
+
consume_char(),
|
|
253
|
+
consume_char()
|
|
254
|
+
]), ($) => abort({
|
|
255
|
+
'range': create_range(iterator, { 'start character': $p['start character'] }),
|
|
256
|
+
'expected': ['unicode character', { 'found': p_.literal.set(42) }] //FIXME: should be unicode *value*
|
|
257
|
+
}));
|
|
258
|
+
default: return abort({
|
|
259
|
+
'range': create_range(iterator, { 'start character': $p['start character'] }),
|
|
260
|
+
'expected': ['escape character', {
|
|
261
|
+
'found': p_.literal.set($.code)
|
|
262
|
+
}]
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
default: return $.code;
|
|
267
|
+
}
|
|
268
|
+
}),
|
|
269
|
+
on_no_progression: () => p_unreachable_code_path("'handle' directly consumes the next character, so this should never happen"),
|
|
270
|
+
}), ($) => $);
|
|
271
|
+
iterator.consume(//discard the end character
|
|
272
|
+
() => abort({
|
|
273
|
+
'expected': ['text termination', null],
|
|
274
|
+
'range': create_range(iterator, { 'start character': $p['start character'] }),
|
|
275
|
+
}), () => null);
|
|
276
|
+
return $p_content;
|
|
277
|
+
};
|
|
278
|
+
export const Tokenizer_Result = (iterator, abort, $p) => ({
|
|
279
|
+
'leading trivia': Trivia(iterator, abort),
|
|
280
|
+
'tokens': iterator.build_list({
|
|
281
|
+
has_more_items: ($) => true,
|
|
282
|
+
handle: () => {
|
|
283
|
+
const $p_start = iterator.peek(() => p_unreachable_code_path("has_more_items -> true"), ($) => $);
|
|
284
|
+
return ({
|
|
285
|
+
'start': $p_start.location,
|
|
286
|
+
'type': iterator.peek(() => p_unreachable_code_path("has_more_items -> true"), ($) => {
|
|
287
|
+
const Character = {
|
|
288
|
+
open_angle_bracket: 0x3C, // <
|
|
289
|
+
open_brace: 0x7B, // {
|
|
290
|
+
open_bracket: 0x5B, // [
|
|
291
|
+
open_paren: 0x28, // (
|
|
292
|
+
close_angle_bracket: 0x3E, // >
|
|
293
|
+
close_brace: 0x7D, // }
|
|
294
|
+
close_bracket: 0x5D, // ]
|
|
295
|
+
close_paren: 0x29, // )
|
|
296
|
+
apostrophe: 0x27, // '
|
|
297
|
+
asterisk: 0x2A, // *
|
|
298
|
+
at: 0x40, // @
|
|
299
|
+
backtick: 0x60, // `
|
|
300
|
+
bang: 0x21,
|
|
301
|
+
colon: 0x3A, // :
|
|
302
|
+
pipe: 0x7C, // |
|
|
303
|
+
quotation_mark: 0x22, // "
|
|
304
|
+
slash: 0x2F, // /
|
|
305
|
+
underscore: 0x5F, // _
|
|
306
|
+
tilde: 0x7E, // ~
|
|
307
|
+
hash: 0x23, // #
|
|
308
|
+
space: 0x20, // space
|
|
309
|
+
tab: 0x09, // \t
|
|
310
|
+
};
|
|
311
|
+
switch ($.code) {
|
|
312
|
+
case Character.open_brace: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['{', null]);
|
|
313
|
+
case Character.open_bracket: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['[', null]);
|
|
314
|
+
case Character.open_angle_bracket: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['<', null]);
|
|
315
|
+
case Character.open_paren: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['(', null]);
|
|
316
|
+
case Character.close_brace: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['}', null]);
|
|
317
|
+
case Character.close_bracket: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => [']', null]);
|
|
318
|
+
case Character.close_angle_bracket: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['>', null]);
|
|
319
|
+
case Character.close_paren: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => [')', null]);
|
|
320
|
+
//individuals
|
|
321
|
+
case Character.hash: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['#', null] // missing data token
|
|
322
|
+
);
|
|
323
|
+
case Character.pipe: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['|', null] // state value token
|
|
324
|
+
);
|
|
325
|
+
case Character.underscore: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['_', null] // unset value token
|
|
326
|
+
);
|
|
327
|
+
case Character.tilde: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['~', null] // unset value token
|
|
328
|
+
);
|
|
329
|
+
case Character.asterisk: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['*', null] // set value token
|
|
330
|
+
);
|
|
331
|
+
case Character.at: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['@', null] // include token
|
|
332
|
+
);
|
|
333
|
+
case Character.bang: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['!', null] // header token
|
|
334
|
+
);
|
|
335
|
+
case Character.colon: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => [':', null] // structural token
|
|
336
|
+
);
|
|
337
|
+
case Character.quotation_mark: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['text', {
|
|
338
|
+
'value': Delimited_Text(iterator, abort, {
|
|
339
|
+
'start character': $,
|
|
340
|
+
'end character': Character.quotation_mark,
|
|
341
|
+
'allow newlines': true,
|
|
342
|
+
}),
|
|
343
|
+
'type': ['quoted', null],
|
|
344
|
+
}]);
|
|
345
|
+
case Character.backtick: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['text', {
|
|
346
|
+
'value': Delimited_Text(iterator, abort, {
|
|
347
|
+
'start character': $,
|
|
348
|
+
'end character': Character.backtick,
|
|
349
|
+
'allow newlines': false,
|
|
350
|
+
}),
|
|
351
|
+
'type': ['backticked', null],
|
|
352
|
+
}]);
|
|
353
|
+
case Character.apostrophe: return iterator.consume(() => p_unreachable_code_path("peeked"), ($) => ['text', {
|
|
354
|
+
'value': Delimited_Text(iterator, abort, {
|
|
355
|
+
'start character': $,
|
|
356
|
+
'end character': Character.apostrophe,
|
|
357
|
+
'allow newlines': false,
|
|
358
|
+
}),
|
|
359
|
+
'type': ['apostrophed', null],
|
|
360
|
+
}]);
|
|
361
|
+
default: return ['text', {
|
|
362
|
+
'type': ['undelimited', null],
|
|
363
|
+
'value': p_text_from_list(iterator.build_list({
|
|
364
|
+
has_more_items: ($) => {
|
|
365
|
+
const WhitespaceChars = {
|
|
366
|
+
tab: 0x09, // \t
|
|
367
|
+
line_feed: 0x0A, // \n
|
|
368
|
+
carriage_return: 0x0D, // \r
|
|
369
|
+
space: 0x20, //
|
|
370
|
+
comma: 0x2C, // ,
|
|
371
|
+
};
|
|
372
|
+
return $.code !== Character.open_brace &&
|
|
373
|
+
$.code !== Character.close_brace &&
|
|
374
|
+
$.code !== Character.open_bracket &&
|
|
375
|
+
$.code !== Character.close_bracket &&
|
|
376
|
+
$.code !== Character.open_angle_bracket &&
|
|
377
|
+
$.code !== Character.close_angle_bracket &&
|
|
378
|
+
$.code !== Character.open_paren &&
|
|
379
|
+
$.code !== Character.close_paren &&
|
|
380
|
+
$.code !== Character.apostrophe &&
|
|
381
|
+
$.code !== Character.asterisk &&
|
|
382
|
+
$.code !== Character.at &&
|
|
383
|
+
$.code !== Character.backtick &&
|
|
384
|
+
$.code !== Character.bang &&
|
|
385
|
+
$.code !== Character.colon &&
|
|
386
|
+
$.code !== Character.pipe &&
|
|
387
|
+
$.code !== Character.quotation_mark &&
|
|
388
|
+
$.code !== Character.slash &&
|
|
389
|
+
$.code !== Character.tilde &&
|
|
390
|
+
$.code !== WhitespaceChars.comma &&
|
|
391
|
+
$.code !== WhitespaceChars.space &&
|
|
392
|
+
$.code !== WhitespaceChars.tab &&
|
|
393
|
+
$.code !== WhitespaceChars.line_feed &&
|
|
394
|
+
$.code !== WhitespaceChars.carriage_return;
|
|
395
|
+
},
|
|
396
|
+
handle: () => iterator.consume(() => p_unreachable_code_path("has_more_items -> true"), ($) => $.code),
|
|
397
|
+
on_no_progression: () => p_unreachable_code_path("handle consumes directly"),
|
|
398
|
+
}), ($) => $)
|
|
399
|
+
}];
|
|
400
|
+
}
|
|
401
|
+
}),
|
|
402
|
+
'end': create_range(iterator, { 'start character': $p_start }).end,
|
|
403
|
+
'trailing trivia': Trivia(iterator, abort),
|
|
404
|
+
});
|
|
405
|
+
},
|
|
406
|
+
on_no_progression: () => p_unreachable_code_path("handle is expected to always consume at least one character, so this should never happen"),
|
|
407
|
+
}),
|
|
408
|
+
'end': $p['end info']
|
|
409
|
+
});
|
|
410
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGVkX2NoYXJhY3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbXBsZW1lbnRhdGlvbi9tYW51YWwvcmVmaW5lcnMvdG9rZW4vYW5ub3RhdGVkX2NoYXJhY3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQ3hELE9BQU8sS0FBSyxHQUFHLE1BQU0sK0JBQStCLENBQUE7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSx3Q0FBd0MsQ0FBQTtBQUM3RCxPQUFPLHVCQUF1QixNQUFNLHVFQUF1RSxDQUFBO0FBQzNHLE9BQU8sV0FBVyxNQUFNLDJEQUEyRCxDQUFBO0FBQ25GLE9BQU8sZ0JBQWdCLE1BQU0sZ0VBQWdFLENBQUE7QUFFN0YsWUFBWTtBQUNaLE9BQU8sS0FBSyxJQUFJLE1BQU0sb0RBQW9ELENBQUE7QUFDMUUsT0FBTyxLQUFLLEtBQUssTUFBTSw2REFBNkQsQ0FBQTtBQUNwRixPQUFPLEtBQUssVUFBVSxNQUFNLDhFQUE4RSxDQUFBO0FBQzFHLE9BQU8sS0FBSyxVQUFVLE1BQU0sZ0VBQWdFLENBQUE7QUFFNUYsT0FBTyxLQUFLLGVBQWUsTUFBTSxnRUFBZ0UsQ0FBQTtBQUNqRyxPQUFPLEtBQUssS0FBSyxNQUFNLCtFQUErRSxDQUFBO0FBRXRHLGNBQWM7QUFJZCxNQUFNLFlBQVksR0FPZCxDQUNBLFFBQVEsRUFDUixFQUFFLEVBQ21CLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRO0lBQ3ZDLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUNoQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUNSLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUNwQjtDQUNKLENBQUMsQ0FBQTtBQUdGLE1BQU0sQ0FBQyxN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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "astn-core",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.126",
|
|
4
4
|
"author": "Corno",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"description": "The TypeScript library for parsing and formatting ASTN (Abstract Syntax Tree Notation) - a human-editable data format for structured content",
|