astn 0.111.21 → 0.111.23

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.
Files changed (45) hide show
  1. package/dist/{sealed_parse → exceptional/authoring_parse}/ast.d.ts +3 -3
  2. package/dist/{authoring_parse → exceptional/authoring_parse}/ast.js +1 -1
  3. package/dist/{authoring_parse → exceptional/authoring_parse}/astn_parse_generic.d.ts +2 -2
  4. package/dist/exceptional/authoring_parse/astn_parse_generic.js +50 -0
  5. package/dist/exceptional/authoring_parse/parse.d.ts +6 -0
  6. package/dist/{sealed_parse → exceptional/authoring_parse}/parse.js +1 -1
  7. package/dist/exceptional/authoring_parse/string_iterator.js +113 -0
  8. package/dist/{authoring_parse → exceptional/authoring_parse}/token.d.ts +1 -1
  9. package/dist/{sealed_parse → exceptional/authoring_parse}/token.js +12 -4
  10. package/dist/{authoring_parse → exceptional/sealed_parse}/ast.d.ts +3 -3
  11. package/dist/{sealed_parse → exceptional/sealed_parse}/ast.js +1 -1
  12. package/dist/{sealed_parse → exceptional/sealed_parse}/astn_parse_generic.d.ts +2 -2
  13. package/dist/exceptional/sealed_parse/astn_parse_generic.js +50 -0
  14. package/dist/{authoring_parse → exceptional/sealed_parse}/parse.d.ts +2 -2
  15. package/dist/{authoring_parse → exceptional/sealed_parse}/parse.js +1 -1
  16. package/dist/exceptional/sealed_parse/string_iterator.js +113 -0
  17. package/dist/{sealed_parse → exceptional/sealed_parse}/token.d.ts +1 -1
  18. package/dist/{authoring_parse → exceptional/sealed_parse}/token.js +11 -3
  19. package/dist/{serializers → exceptional/serializers}/astn.js +1 -1
  20. package/dist/{serializers → exceptional/serializers}/parse_result.d.ts +1 -1
  21. package/dist/{serializers → exceptional/serializers}/parse_result.js +2 -2
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +5 -0
  24. package/dist/operations/impure/string/serialize_apostrophed_string.js +12 -0
  25. package/dist/operations/impure/string/serialize_backticked_string.js +12 -0
  26. package/dist/operations/impure/{serialize_apostrophed_string.js → string/serialize_quoted_string.js} +5 -5
  27. package/dist/procedures/convert_to_json.js +3 -3
  28. package/dist/procedures/validate_astn.js +3 -3
  29. package/dist/transformations/authoring_ast/ide.js +2 -2
  30. package/dist/transformations/authoring_target/fountain_pen_block.js +5 -5
  31. package/dist/transformations/sealed_target/fountain_pen_block.js +4 -4
  32. package/package.json +4 -4
  33. package/dist/authoring_parse/astn_parse_generic.js +0 -50
  34. package/dist/authoring_parse/string_iterator.js +0 -113
  35. package/dist/operations/impure/serialize_backticked_string.js +0 -12
  36. package/dist/operations/impure/serialize_quoted_string.js +0 -12
  37. package/dist/sealed_parse/astn_parse_generic.js +0 -50
  38. package/dist/sealed_parse/parse.d.ts +0 -6
  39. package/dist/sealed_parse/string_iterator.js +0 -113
  40. /package/dist/{authoring_parse → exceptional/authoring_parse}/string_iterator.d.ts +0 -0
  41. /package/dist/{sealed_parse → exceptional/sealed_parse}/string_iterator.d.ts +0 -0
  42. /package/dist/{serializers → exceptional/serializers}/astn.d.ts +0 -0
  43. /package/dist/operations/impure/{serialize_apostrophed_string.d.ts → string/serialize_apostrophed_string.d.ts} +0 -0
  44. /package/dist/operations/impure/{serialize_backticked_string.d.ts → string/serialize_backticked_string.d.ts} +0 -0
  45. /package/dist/operations/impure/{serialize_quoted_string.d.ts → string/serialize_quoted_string.d.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "astn",
3
- "version": "0.111.21",
3
+ "version": "0.111.23",
4
4
  "description": "A TypeScript library for parsing and formatting ASTN (Abstract Syntax Tree Notation) - a human-editable data format for structured content",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -51,8 +51,8 @@
51
51
  "exupery-core-bin": "^0.1.18",
52
52
  "exupery-core-data": "^0.1.11",
53
53
  "exupery-core-dev": "^0.1.3",
54
- "pareto-fountain-pen": "^0.1.34",
55
- "pareto-json": "^0.1.11",
56
- "pareto-standard-operations": "^0.1.14"
54
+ "pareto-fountain-pen": "^0.1.36",
55
+ "pareto-json": "^0.1.12",
56
+ "pareto-standard-operations": "^0.1.15"
57
57
  }
58
58
  }
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.create_astn_token_iterator = exports.throw_unexpected_token = exports.throw_lexer_error = exports.Parse_Error_Class = void 0;
4
- class Parse_Error_Class {
5
- type;
6
- range;
7
- constructor(type, range) {
8
- this.type = type;
9
- this.range = range;
10
- }
11
- }
12
- exports.Parse_Error_Class = Parse_Error_Class;
13
- const throw_parse_error = (type, range) => {
14
- throw new Parse_Error_Class(type, range);
15
- };
16
- const throw_lexer_error = (type, range) => {
17
- throw new Parse_Error_Class(['lexer', type], range);
18
- };
19
- exports.throw_lexer_error = throw_lexer_error;
20
- const throw_unexpected_token = (found, expected) => {
21
- return throw_parse_error(['parser', {
22
- 'expected': expected,
23
- 'cause': ['unexpected token', {
24
- 'found': found.type,
25
- }]
26
- }], {
27
- 'start': found.start,
28
- 'end': found.end
29
- });
30
- };
31
- exports.throw_unexpected_token = throw_unexpected_token;
32
- const create_astn_token_iterator = ($, end) => {
33
- let position = 0;
34
- return {
35
- 'get required token': (pet) => {
36
- return $.__get_element_at(position).transform(($) => $, () => throw_parse_error(['parser', {
37
- 'expected': pet,
38
- 'cause': ['missing token', null]
39
- }], {
40
- 'start': end,
41
- 'end': end,
42
- }));
43
- },
44
- 'consume token': () => {
45
- position += 1;
46
- },
47
- };
48
- };
49
- exports.create_astn_token_iterator = create_astn_token_iterator;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0bl9wYXJzZV9nZW5lcmljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1dGhvcmluZ19wYXJzZS9hc3RuX3BhcnNlX2dlbmVyaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUEsTUFBYSxpQkFBaUI7SUFHTjtJQUNBO0lBRnBCLFlBQ29CLElBQXNDLEVBQ3RDLEtBQW9CO1FBRHBCLFNBQUksR0FBSixJQUFJLENBQWtDO1FBQ3RDLFVBQUssR0FBTCxLQUFLLENBQWU7SUFFdkMsQ0FBQztDQUNMO0FBUEQsOENBT0M7QUFFRCxNQUFNLGlCQUFpQixHQUFHLENBQ3RCLElBQXNDLEVBQ3RDLEtBQW9CLEVBQ2YsRUFBRTtJQUNQLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRU0sTUFBTSxpQkFBaUIsR0FBRyxDQUM3QixJQUErQyxFQUMvQyxLQUFvQixFQUNmLEVBQUU7SUFDUCxNQUFNLElBQUksaUJBQWlCLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDdkQsQ0FBQyxDQUFBO0FBTFksUUFBQSxpQkFBaUIscUJBSzdCO0FBRU0sTUFBTSxzQkFBc0IsR0FBRyxDQUNsQyxLQUE4QixFQUM5QixRQUEwRSxFQUNyRSxFQUFFO0lBQ1AsT0FBTyxpQkFBaUIsQ0FDcEIsQ0FBQyxRQUFRLEVBQUU7WUFDUCxVQUFVLEVBQUUsUUFBUTtZQUNwQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRTtvQkFDMUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJO2lCQUN0QixDQUFDO1NBQ0wsQ0FBQyxFQUNGO1FBQ0ksT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRztLQUNuQixDQUNKLENBQUE7QUFDTCxDQUFDLENBQUE7QUFoQlksUUFBQSxzQkFBc0IsMEJBZ0JsQztBQUlNLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFrQyxFQUFFLEdBQWdCLEVBQXVCLEVBQUU7SUFDcEgsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0lBQ2hCLE9BQU87UUFDSCxvQkFBb0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FDekMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDUixHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FDbkIsQ0FBQyxRQUFRLEVBQUU7b0JBQ1AsVUFBVSxFQUFFLEdBQUc7b0JBQ2YsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQztpQkFDbkMsQ0FBQyxFQUNGO2dCQUNJLE9BQU8sRUFBRSxHQUFHO2dCQUNaLEtBQUssRUFBRSxHQUFHO2FBQ2IsQ0FDSixDQUNKLENBQUE7UUFDTCxDQUFDO1FBQ0QsZUFBZSxFQUFFLEdBQUcsRUFBRTtZQUNsQixRQUFRLElBQUksQ0FBQyxDQUFBO1FBQ2pCLENBQUM7S0FDSixDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBdEJZLFFBQUEsMEJBQTBCLDhCQXNCdEMifQ==
@@ -1,113 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.create_string_iterator = exports.is_control_character = void 0;
4
- const to_character_list_1 = require("exupery-standard-library/dist/text/to_character_list");
5
- const starts_with_1 = require("exupery-standard-library/dist/text/starts_with");
6
- const WhitespaceChars = {
7
- tab: 0x09, // \t
8
- line_feed: 0x0A, // \n
9
- carriage_return: 0x0D, // \r
10
- space: 0x20, //
11
- };
12
- const is_control_character = ($) => {
13
- return ($ < 0x20 && $ !== WhitespaceChars.tab && $ !== WhitespaceChars.line_feed && $ !== WhitespaceChars.carriage_return);
14
- };
15
- exports.is_control_character = is_control_character;
16
- /**
17
- * Creates a string iterator that allows iterating over characters in a string,
18
- * while keeping track of line numbers, columns, and line indentation.
19
- */
20
- const create_string_iterator = ($, $p) => {
21
- const source = $;
22
- const characters = (0, to_character_list_1.$$)($);
23
- const length = characters.__get_length();
24
- let found_carriage_return_before = false;
25
- let position = 0;
26
- let relative_position = {
27
- 'line': 0,
28
- 'column': 0,
29
- 'line indentation': null
30
- };
31
- const consume_character = () => {
32
- const c = characters.__get_element_at(position);
33
- const start = relative_position;
34
- relative_position = c.transform(($) => {
35
- return $ === WhitespaceChars.line_feed
36
- ? {
37
- 'line': relative_position.line + 1,
38
- 'column': 0,
39
- 'line indentation': null,
40
- }
41
- : found_carriage_return_before
42
- ? {
43
- 'line': relative_position.line + 1,
44
- 'column': 0,
45
- 'line indentation': null,
46
- }
47
- : {
48
- 'line': relative_position.line,
49
- 'column': relative_position['column'] + ($ === WhitespaceChars.tab
50
- ? $p['tab size']
51
- : 1),
52
- 'line indentation': relative_position['line indentation'] !== null
53
- ? relative_position['line indentation']
54
- : $ === WhitespaceChars.space || $ === WhitespaceChars.tab
55
- ? null
56
- : relative_position['column'],
57
- };
58
- }, () => relative_position //this is weird, we were already at the end of the list
59
- );
60
- found_carriage_return_before = c.transform(($) => $ === WhitespaceChars.carriage_return, () => false);
61
- position += 1;
62
- };
63
- return {
64
- 'consume string': ($) => {
65
- (0, to_character_list_1.$$)($).__for_each(() => {
66
- consume_character();
67
- });
68
- },
69
- 'consume character': consume_character,
70
- 'get current character': () => {
71
- if (position === length) {
72
- return null;
73
- }
74
- return characters.__get_element_at(position).transform(($) => $, () => null);
75
- },
76
- 'look ahead': ($) => {
77
- const next_position = position + $;
78
- if (next_position >= length) {
79
- return null;
80
- }
81
- return characters.__get_element_at(next_position).transform(($) => $, () => null);
82
- },
83
- 'create location info': () => {
84
- return {
85
- 'absolute': position,
86
- 'relative': {
87
- 'line': relative_position.line,
88
- 'column': relative_position['column'],
89
- }
90
- };
91
- },
92
- 'create offset location info': (subtract) => {
93
- return {
94
- 'absolute': position - subtract,
95
- 'relative': {
96
- 'line': relative_position.line,
97
- 'column': relative_position['column'] - subtract,
98
- }
99
- };
100
- },
101
- 'create location info string': () => `${relative_position.line}:${relative_position['column']}`,
102
- 'get line indentation': () => {
103
- return relative_position['line indentation'] !== null
104
- ? relative_position['line indentation']
105
- : relative_position['column'];
106
- },
107
- 'starts with': ($) => {
108
- return (0, starts_with_1.$$)(source, $, position);
109
- }
110
- };
111
- };
112
- exports.create_string_iterator = create_string_iterator;
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nX2l0ZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1dGhvcmluZ19wYXJzZS9zdHJpbmdfaXRlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBcUNBLDRGQUFpRztBQUNqRyxnRkFBcUY7QUFFckYsTUFBTSxlQUFlLEdBQUc7SUFDcEIsR0FBRyxFQUFFLElBQUksRUFBbUIsS0FBSztJQUNqQyxTQUFTLEVBQUUsSUFBSSxFQUFhLEtBQUs7SUFDakMsZUFBZSxFQUFFLElBQUksRUFBTyxLQUFLO0lBQ2pDLEtBQUssRUFBRSxJQUFJLEVBQWlCLEVBQUU7Q0FDakMsQ0FBQTtBQUVNLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFTLEVBQVcsRUFBRTtJQUN2RCxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssZUFBZSxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBQzlILENBQUMsQ0FBQTtBQUZZLFFBQUEsb0JBQW9CLHdCQUVoQztBQUVEOzs7R0FHRztBQUVJLE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsQ0FBUyxFQUNULEVBRUMsRUFDYyxFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUNoQixNQUFNLFVBQVUsR0FBRyxJQUFBLHNCQUFvQixFQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQVF4QyxJQUFJLDRCQUE0QixHQUFHLEtBQUssQ0FBQTtJQUN4QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUE7SUFDaEIsSUFBSSxpQkFBaUIsR0FBa0M7UUFDbkQsTUFBTSxFQUFFLENBQUM7UUFDVCxRQUFRLEVBQUUsQ0FBQztRQUNYLGtCQUFrQixFQUFFLElBQUk7S0FDM0IsQ0FBQTtJQUVE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
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.$$ = void 0;
4
- const escape_character_1 = require("pareto-standard-operations/dist/impure/text/escape_character");
5
- const $$ = ($) => ($['add delimiters'] ? '`' : '')
6
- + (0, escape_character_1.$$)($.value, {
7
- 'character code': 96, // `
8
- 'escape character code': 92, // \
9
- })
10
- + ($['add delimiters'] ? '`' : '');
11
- exports.$$ = $$;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplX2JhY2t0aWNrZWRfc3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL29wZXJhdGlvbnMvaW1wdXJlL3NlcmlhbGl6ZV9iYWNrdGlja2VkX3N0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxtR0FBd0c7QUFFakcsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUdsQixFQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztNQUN4QyxJQUFBLHFCQUFtQixFQUNqQixDQUFDLENBQUMsS0FBSyxFQUNQO1FBQ0ksZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLElBQUk7UUFDMUIsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLElBQUk7S0FFcEMsQ0FDSjtNQUNDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7QUFaekIsUUFBQSxFQUFFLE1BWXVCIn0=
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.$$ = void 0;
4
- const escape_character_1 = require("pareto-standard-operations/dist/impure/text/escape_character");
5
- const $$ = ($) => ($['add delimiters'] ? '"' : '')
6
- + (0, escape_character_1.$$)($.value, {
7
- 'character code': 34, // "
8
- 'escape character code': 92, // \
9
- })
10
- + ($['add delimiters'] ? '"' : '');
11
- exports.$$ = $$;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplX3F1b3RlZF9zdHJpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvb3BlcmF0aW9ucy9pbXB1cmUvc2VyaWFsaXplX3F1b3RlZF9zdHJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsbUdBQXdHO0FBRWpHLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FHbEIsRUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7TUFDeEMsSUFBQSxxQkFBbUIsRUFDakIsQ0FBQyxDQUFDLEtBQUssRUFDUDtRQUNJLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxJQUFJO1FBQzFCLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxJQUFJO0tBQ3BDLENBQ0o7TUFDQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBWHpCLFFBQUEsRUFBRSxNQVd1QiJ9
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.create_astn_token_iterator = exports.throw_unexpected_token = exports.throw_lexer_error = exports.Parse_Error_Class = void 0;
4
- class Parse_Error_Class {
5
- type;
6
- range;
7
- constructor(type, range) {
8
- this.type = type;
9
- this.range = range;
10
- }
11
- }
12
- exports.Parse_Error_Class = Parse_Error_Class;
13
- const throw_parse_error = (type, range) => {
14
- throw new Parse_Error_Class(type, range);
15
- };
16
- const throw_lexer_error = (type, range) => {
17
- throw new Parse_Error_Class(['lexer', type], range);
18
- };
19
- exports.throw_lexer_error = throw_lexer_error;
20
- const throw_unexpected_token = (found, expected) => {
21
- return throw_parse_error(['parser', {
22
- 'expected': expected,
23
- 'cause': ['unexpected token', {
24
- 'found': found.type,
25
- }]
26
- }], {
27
- 'start': found.start,
28
- 'end': found.end
29
- });
30
- };
31
- exports.throw_unexpected_token = throw_unexpected_token;
32
- const create_astn_token_iterator = ($, end) => {
33
- let position = 0;
34
- return {
35
- 'get required token': (pet) => {
36
- return $.__get_element_at(position).transform(($) => $, () => throw_parse_error(['parser', {
37
- 'expected': pet,
38
- 'cause': ['missing token', null]
39
- }], {
40
- 'start': end,
41
- 'end': end,
42
- }));
43
- },
44
- 'consume token': () => {
45
- position += 1;
46
- },
47
- };
48
- };
49
- exports.create_astn_token_iterator = create_astn_token_iterator;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0bl9wYXJzZV9nZW5lcmljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYWxlZF9wYXJzZS9hc3RuX3BhcnNlX2dlbmVyaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUEsTUFBYSxpQkFBaUI7SUFHTjtJQUNBO0lBRnBCLFlBQ29CLElBQXNDLEVBQ3RDLEtBQW9CO1FBRHBCLFNBQUksR0FBSixJQUFJLENBQWtDO1FBQ3RDLFVBQUssR0FBTCxLQUFLLENBQWU7SUFFdkMsQ0FBQztDQUNMO0FBUEQsOENBT0M7QUFFRCxNQUFNLGlCQUFpQixHQUFHLENBQ3RCLElBQXNDLEVBQ3RDLEtBQW9CLEVBQ2YsRUFBRTtJQUNQLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRU0sTUFBTSxpQkFBaUIsR0FBRyxDQUM3QixJQUErQyxFQUMvQyxLQUFvQixFQUNmLEVBQUU7SUFDUCxNQUFNLElBQUksaUJBQWlCLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDdkQsQ0FBQyxDQUFBO0FBTFksUUFBQSxpQkFBaUIscUJBSzdCO0FBRU0sTUFBTSxzQkFBc0IsR0FBRyxDQUNsQyxLQUE4QixFQUM5QixRQUEwRSxFQUNyRSxFQUFFO0lBQ1AsT0FBTyxpQkFBaUIsQ0FDcEIsQ0FBQyxRQUFRLEVBQUU7WUFDUCxVQUFVLEVBQUUsUUFBUTtZQUNwQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRTtvQkFDMUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJO2lCQUN0QixDQUFDO1NBQ0wsQ0FBQyxFQUNGO1FBQ0ksT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRztLQUNuQixDQUNKLENBQUE7QUFDTCxDQUFDLENBQUE7QUFoQlksUUFBQSxzQkFBc0IsMEJBZ0JsQztBQUlNLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFrQyxFQUFFLEdBQWdCLEVBQXVCLEVBQUU7SUFDcEgsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFBO0lBQ2hCLE9BQU87UUFDSCxvQkFBb0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FDekMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDUixHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FDbkIsQ0FBQyxRQUFRLEVBQUU7b0JBQ1AsVUFBVSxFQUFFLEdBQUc7b0JBQ2YsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQztpQkFDbkMsQ0FBQyxFQUNGO2dCQUNJLE9BQU8sRUFBRSxHQUFHO2dCQUNaLEtBQUssRUFBRSxHQUFHO2FBQ2IsQ0FDSixDQUNKLENBQUE7UUFDTCxDQUFDO1FBQ0QsZUFBZSxFQUFFLEdBQUcsRUFBRTtZQUNsQixRQUFRLElBQUksQ0FBQyxDQUFBO1FBQ2pCLENBQUM7S0FDSixDQUFBO0FBQ0wsQ0FBQyxDQUFBO0FBdEJZLFFBQUEsMEJBQTBCLDhCQXNCdEMifQ==
@@ -1,6 +0,0 @@
1
- import * as _ea from 'exupery-core-alg';
2
- import * as _target from "../generated/interface/schemas/sealed_parse_result/data_types/target";
3
- import * as s_ast from "../generated/interface/schemas/sealed_ast/data_types/target";
4
- export declare const parse: ($: string, $p: {
5
- "tab size": number;
6
- }) => _ea.Unguaranteed_Transformation_Result<s_ast.Document, _target.Parse_Error>;
@@ -1,113 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.create_string_iterator = exports.is_control_character = void 0;
4
- const to_character_list_1 = require("exupery-standard-library/dist/text/to_character_list");
5
- const starts_with_1 = require("exupery-standard-library/dist/text/starts_with");
6
- const WhitespaceChars = {
7
- tab: 0x09, // \t
8
- line_feed: 0x0A, // \n
9
- carriage_return: 0x0D, // \r
10
- space: 0x20, //
11
- };
12
- const is_control_character = ($) => {
13
- return ($ < 0x20 && $ !== WhitespaceChars.tab && $ !== WhitespaceChars.line_feed && $ !== WhitespaceChars.carriage_return);
14
- };
15
- exports.is_control_character = is_control_character;
16
- /**
17
- * Creates a string iterator that allows iterating over characters in a string,
18
- * while keeping track of line numbers, columns, and line indentation.
19
- */
20
- const create_string_iterator = ($, $p) => {
21
- const source = $;
22
- const characters = (0, to_character_list_1.$$)($);
23
- const length = characters.__get_length();
24
- let found_carriage_return_before = false;
25
- let position = 0;
26
- let relative_position = {
27
- 'line': 0,
28
- 'column': 0,
29
- 'line indentation': null
30
- };
31
- const consume_character = () => {
32
- const c = characters.__get_element_at(position);
33
- const start = relative_position;
34
- relative_position = c.transform(($) => {
35
- return $ === WhitespaceChars.line_feed
36
- ? {
37
- 'line': relative_position.line + 1,
38
- 'column': 0,
39
- 'line indentation': null,
40
- }
41
- : found_carriage_return_before
42
- ? {
43
- 'line': relative_position.line + 1,
44
- 'column': 0,
45
- 'line indentation': null,
46
- }
47
- : {
48
- 'line': relative_position.line,
49
- 'column': relative_position['column'] + ($ === WhitespaceChars.tab
50
- ? $p['tab size']
51
- : 1),
52
- 'line indentation': relative_position['line indentation'] !== null
53
- ? relative_position['line indentation']
54
- : $ === WhitespaceChars.space || $ === WhitespaceChars.tab
55
- ? null
56
- : relative_position['column'],
57
- };
58
- }, () => relative_position //this is weird, we were already at the end of the list
59
- );
60
- found_carriage_return_before = c.transform(($) => $ === WhitespaceChars.carriage_return, () => false);
61
- position += 1;
62
- };
63
- return {
64
- 'consume string': ($) => {
65
- (0, to_character_list_1.$$)($).__for_each(() => {
66
- consume_character();
67
- });
68
- },
69
- 'consume character': consume_character,
70
- 'get current character': () => {
71
- if (position === length) {
72
- return null;
73
- }
74
- return characters.__get_element_at(position).transform(($) => $, () => null);
75
- },
76
- 'look ahead': ($) => {
77
- const next_position = position + $;
78
- if (next_position >= length) {
79
- return null;
80
- }
81
- return characters.__get_element_at(next_position).transform(($) => $, () => null);
82
- },
83
- 'create location info': () => {
84
- return {
85
- 'absolute': position,
86
- 'relative': {
87
- 'line': relative_position.line,
88
- 'column': relative_position['column'],
89
- }
90
- };
91
- },
92
- 'create offset location info': (subtract) => {
93
- return {
94
- 'absolute': position - subtract,
95
- 'relative': {
96
- 'line': relative_position.line,
97
- 'column': relative_position['column'] - subtract,
98
- }
99
- };
100
- },
101
- 'create location info string': () => `${relative_position.line}:${relative_position['column']}`,
102
- 'get line indentation': () => {
103
- return relative_position['line indentation'] !== null
104
- ? relative_position['line indentation']
105
- : relative_position['column'];
106
- },
107
- 'starts with': ($) => {
108
- return (0, starts_with_1.$$)(source, $, position);
109
- }
110
- };
111
- };
112
- exports.create_string_iterator = create_string_iterator;
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nX2l0ZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYWxlZF9wYXJzZS9zdHJpbmdfaXRlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBcUNBLDRGQUFpRztBQUNqRyxnRkFBcUY7QUFFckYsTUFBTSxlQUFlLEdBQUc7SUFDcEIsR0FBRyxFQUFFLElBQUksRUFBbUIsS0FBSztJQUNqQyxTQUFTLEVBQUUsSUFBSSxFQUFhLEtBQUs7SUFDakMsZUFBZSxFQUFFLElBQUksRUFBTyxLQUFLO0lBQ2pDLEtBQUssRUFBRSxJQUFJLEVBQWlCLEVBQUU7Q0FDakMsQ0FBQTtBQUVNLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFTLEVBQVcsRUFBRTtJQUN2RCxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssZUFBZSxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBQzlILENBQUMsQ0FBQTtBQUZZLFFBQUEsb0JBQW9CLHdCQUVoQztBQUVEOzs7R0FHRztBQUVJLE1BQU0sc0JBQXNCLEdBQUcsQ0FDbEMsQ0FBUyxFQUNULEVBRUMsRUFDYyxFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUNoQixNQUFNLFVBQVUsR0FBRyxJQUFBLHNCQUFvQixFQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQVF4QyxJQUFJLDRCQUE0QixHQUFHLEtBQUssQ0FBQTtJQUN4QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUE7SUFDaEIsSUFBSSxpQkFBaUIsR0FBa0M7UUFDbkQsTUFBTSxFQUFFLENBQUM7UUFDVCxRQUFRLEVBQUUsQ0FBQztRQUNYLGtCQUFrQixFQUFFLElBQUk7S0FDM0IsQ0FBQTtJQUVELE1B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