yini-parser 1.5.0 → 1.6.0

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 (87) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +183 -37
  3. package/dist/YINI.d.ts +22 -7
  4. package/dist/YINI.js +101 -0
  5. package/dist/core/astBuilder.d.ts +94 -15
  6. package/dist/core/astBuilder.js +394 -362
  7. package/dist/core/errorDataHandler.d.ts +6 -1
  8. package/dist/core/errorDataHandler.js +30 -43
  9. package/dist/core/internalTypes.d.ts +10 -1
  10. package/dist/core/objectBuilder.js +21 -6
  11. package/dist/core/options/defaultParserOptions.d.ts +3 -2
  12. package/dist/core/options/defaultParserOptions.js +2 -1
  13. package/dist/core/options/optionsFunctions.js +5 -1
  14. package/dist/core/pipeline/pipeline.js +31 -10
  15. package/dist/core/runtime.js +28 -19
  16. package/dist/grammar/generated/YiniLexer.d.ts +28 -35
  17. package/dist/grammar/generated/YiniLexer.js +323 -310
  18. package/dist/grammar/generated/YiniParser.d.ts +158 -80
  19. package/dist/grammar/generated/YiniParser.js +1141 -620
  20. package/dist/grammar/generated/YiniParserVisitor.d.ts +77 -14
  21. package/dist/grammar/generated/YiniParserVisitor.js +1 -1
  22. package/dist/index.d.ts +2 -1
  23. package/dist/index.js +4 -3
  24. package/dist/parsers/extractHeaderParts.d.ts +12 -19
  25. package/dist/parsers/extractHeaderParts.js +57 -46
  26. package/dist/parsers/parseNumber.d.ts +24 -6
  27. package/dist/parsers/parseNumber.js +114 -49
  28. package/dist/parsers/parseSectionHeader.d.ts +11 -3
  29. package/dist/parsers/parseSectionHeader.js +55 -43
  30. package/dist/parsers/parseString.js +39 -20
  31. package/dist/parsers/validateShebangPlacement.d.ts +3 -0
  32. package/dist/parsers/validateShebangPlacement.js +52 -0
  33. package/dist/types/index.d.ts +19 -2
  34. package/dist/utils/print.d.ts +1 -0
  35. package/dist/utils/print.js +5 -1
  36. package/dist/utils/string.d.ts +1 -0
  37. package/dist/utils/string.js +17 -1
  38. package/dist/utils/system.d.ts +1 -0
  39. package/dist/utils/system.js +6 -1
  40. package/dist/utils/yiniHelpers.d.ts +44 -2
  41. package/dist/utils/yiniHelpers.js +134 -46
  42. package/examples/compare-formats.md +1 -1
  43. package/examples/nested.yini +1 -1
  44. package/package.json +11 -3
  45. package/dist/YINI.js.map +0 -1
  46. package/dist/config/env.js.map +0 -1
  47. package/dist/core/astBuilder.js.map +0 -1
  48. package/dist/core/errorDataHandler.js.map +0 -1
  49. package/dist/core/internalTypes.js.map +0 -1
  50. package/dist/core/objectBuilder.js.map +0 -1
  51. package/dist/core/options/defaultParserOptions.js.map +0 -1
  52. package/dist/core/options/failLevel.js.map +0 -1
  53. package/dist/core/options/optionsFunctions.js.map +0 -1
  54. package/dist/core/parsingRules/modeFromRulesMatcher.js.map +0 -1
  55. package/dist/core/parsingRules/rulesConstAndGuards.js.map +0 -1
  56. package/dist/core/pipeline/errorListeners.js.map +0 -1
  57. package/dist/core/pipeline/pipeline.js.map +0 -1
  58. package/dist/core/resultMetadataBuilder.js.map +0 -1
  59. package/dist/core/runtime.js.map +0 -1
  60. package/dist/dev/main.d.ts +0 -1
  61. package/dist/dev/main.js +0 -139
  62. package/dist/dev/main.js.map +0 -1
  63. package/dist/dev/quick-test-samples/defect-inputs.d.ts +0 -37
  64. package/dist/dev/quick-test-samples/defect-inputs.js +0 -106
  65. package/dist/dev/quick-test-samples/defect-inputs.js.map +0 -1
  66. package/dist/dev/quick-test-samples/valid-inputs.d.ts +0 -21
  67. package/dist/dev/quick-test-samples/valid-inputs.js +0 -422
  68. package/dist/dev/quick-test-samples/valid-inputs.js.map +0 -1
  69. package/dist/grammar/generated/YiniLexer.js.map +0 -1
  70. package/dist/grammar/generated/YiniParser.js.map +0 -1
  71. package/dist/grammar/generated/YiniParserVisitor.js.map +0 -1
  72. package/dist/index.js.map +0 -1
  73. package/dist/parsers/extractHeaderParts.js.map +0 -1
  74. package/dist/parsers/extractSignificantYiniLine.js.map +0 -1
  75. package/dist/parsers/parseBoolean.js.map +0 -1
  76. package/dist/parsers/parseNull.js.map +0 -1
  77. package/dist/parsers/parseNumber.js.map +0 -1
  78. package/dist/parsers/parseSectionHeader.js.map +0 -1
  79. package/dist/parsers/parseString.js.map +0 -1
  80. package/dist/types/index.js.map +0 -1
  81. package/dist/utils/number.js.map +0 -1
  82. package/dist/utils/object.js.map +0 -1
  83. package/dist/utils/pathAndFileName.js.map +0 -1
  84. package/dist/utils/print.js.map +0 -1
  85. package/dist/utils/string.js.map +0 -1
  86. package/dist/utils/system.js.map +0 -1
  87. package/dist/utils/yiniHelpers.js.map +0 -1
@@ -14,62 +14,67 @@ export default class YiniParser extends Parser {
14
14
  static readonly EMPTY_OBJECT = 11;
15
15
  static readonly EMPTY_LIST = 12;
16
16
  static readonly STRING = 13;
17
- static readonly TRIPLE_QUOTED_STRING = 14;
18
- static readonly SINGLE_OR_DOUBLE = 15;
19
- static readonly R_AND_C_STRING = 16;
20
- static readonly HYPER_STRING = 17;
21
- static readonly NUMBER = 18;
22
- static readonly SS = 19;
23
- static readonly CARET = 20;
24
- static readonly GT = 21;
25
- static readonly LT = 22;
26
- static readonly EQ = 23;
27
- static readonly HASH = 24;
28
- static readonly COMMA = 25;
29
- static readonly COLON = 26;
30
- static readonly OB = 27;
31
- static readonly CB = 28;
32
- static readonly OC = 29;
33
- static readonly CC = 30;
34
- static readonly PLUS = 31;
35
- static readonly DOLLAR = 32;
36
- static readonly PC = 33;
37
- static readonly AT = 34;
38
- static readonly SEMICOLON = 35;
39
- static readonly NL = 36;
40
- static readonly WS = 37;
41
- static readonly BLOCK_COMMENT = 38;
42
- static readonly LINE_COMMENT = 39;
43
- static readonly INLINE_COMMENT = 40;
44
- static readonly KEY = 41;
45
- static readonly IDENT_INVALID = 42;
46
- static readonly REST = 43;
47
- static readonly META_INVALID = 44;
17
+ static readonly NUMBER = 14;
18
+ static readonly CARET = 15;
19
+ static readonly SS = 16;
20
+ static readonly GT = 17;
21
+ static readonly LT = 18;
22
+ static readonly EQ = 19;
23
+ static readonly COMMA = 20;
24
+ static readonly COLON = 21;
25
+ static readonly OB = 22;
26
+ static readonly CB = 23;
27
+ static readonly OC = 24;
28
+ static readonly CC = 25;
29
+ static readonly PLUS = 26;
30
+ static readonly DOLLAR = 27;
31
+ static readonly PC = 28;
32
+ static readonly AT = 29;
33
+ static readonly SEMICOLON = 30;
34
+ static readonly NL = 31;
35
+ static readonly WS = 32;
36
+ static readonly BLOCK_COMMENT = 33;
37
+ static readonly DISABLED_LINE = 34;
38
+ static readonly FULL_LINE_COMMENT = 35;
39
+ static readonly INLINE_COMMENT = 36;
40
+ static readonly KEY = 37;
41
+ static readonly IDENT_INVALID = 38;
42
+ static readonly REST = 39;
43
+ static readonly META_INVALID = 40;
48
44
  static readonly EOF: number;
49
45
  static readonly RULE_yini = 0;
50
46
  static readonly RULE_prolog = 1;
51
47
  static readonly RULE_terminal_stmt = 2;
52
- static readonly RULE_stmt = 3;
53
- static readonly RULE_invalid_section_stmt = 4;
54
- static readonly RULE_meta_stmt = 5;
55
- static readonly RULE_directive = 6;
56
- static readonly RULE_annotation = 7;
57
- static readonly RULE_eol = 8;
58
- static readonly RULE_assignment = 9;
59
- static readonly RULE_member = 10;
60
- static readonly RULE_value = 11;
61
- static readonly RULE_object_literal = 12;
62
- static readonly RULE_object_members = 13;
63
- static readonly RULE_object_member = 14;
64
- static readonly RULE_list_literal = 15;
65
- static readonly RULE_elements = 16;
66
- static readonly RULE_number_literal = 17;
67
- static readonly RULE_null_literal = 18;
68
- static readonly RULE_string_literal = 19;
69
- static readonly RULE_string_concat = 20;
70
- static readonly RULE_boolean_literal = 21;
71
- static readonly RULE_bad_meta_text = 22;
72
- static readonly RULE_bad_member = 23;
48
+ static readonly RULE_terminal_trivia = 3;
49
+ static readonly RULE_stmt = 4;
50
+ static readonly RULE_full_line_comment_stmt = 5;
51
+ static readonly RULE_disabled_line_stmt = 6;
52
+ static readonly RULE_invalid_section_stmt = 7;
53
+ static readonly RULE_meta_stmt = 8;
54
+ static readonly RULE_directive = 9;
55
+ static readonly RULE_yini_directive = 10;
56
+ static readonly RULE_yini_mode_declaration = 11;
57
+ static readonly RULE_annotation = 12;
58
+ static readonly RULE_eol = 13;
59
+ static readonly RULE_assignment = 14;
60
+ static readonly RULE_member = 15;
61
+ static readonly RULE_value = 16;
62
+ static readonly RULE_scalar_value = 17;
63
+ static readonly RULE_concat_expression = 18;
64
+ static readonly RULE_concat_tail = 19;
65
+ static readonly RULE_concat_operand = 20;
66
+ static readonly RULE_string_literal = 21;
67
+ static readonly RULE_object_literal = 22;
68
+ static readonly RULE_object_members = 23;
69
+ static readonly RULE_object_member = 24;
70
+ static readonly RULE_object_member_separator = 25;
71
+ static readonly RULE_list_literal = 26;
72
+ static readonly RULE_elements = 27;
73
+ static readonly RULE_number_literal = 28;
74
+ static readonly RULE_null_literal = 29;
75
+ static readonly RULE_boolean_literal = 30;
76
+ static readonly RULE_bad_meta_text = 31;
77
+ static readonly RULE_bad_member = 32;
73
78
  static readonly literalNames: (string | null)[];
74
79
  static readonly symbolicNames: (string | null)[];
75
80
  static readonly ruleNames: string[];
@@ -83,24 +88,33 @@ export default class YiniParser extends Parser {
83
88
  yini(): YiniContext;
84
89
  prolog(): PrologContext;
85
90
  terminal_stmt(): Terminal_stmtContext;
91
+ terminal_trivia(): Terminal_triviaContext;
86
92
  stmt(): StmtContext;
93
+ full_line_comment_stmt(): Full_line_comment_stmtContext;
94
+ disabled_line_stmt(): Disabled_line_stmtContext;
87
95
  invalid_section_stmt(): Invalid_section_stmtContext;
88
96
  meta_stmt(): Meta_stmtContext;
89
97
  directive(): DirectiveContext;
98
+ yini_directive(): Yini_directiveContext;
99
+ yini_mode_declaration(): Yini_mode_declarationContext;
90
100
  annotation(): AnnotationContext;
91
101
  eol(): EolContext;
92
102
  assignment(): AssignmentContext;
93
103
  member(): MemberContext;
94
104
  value(): ValueContext;
105
+ scalar_value(): Scalar_valueContext;
106
+ concat_expression(): Concat_expressionContext;
107
+ concat_tail(): Concat_tailContext;
108
+ concat_operand(): Concat_operandContext;
109
+ string_literal(): String_literalContext;
95
110
  object_literal(): Object_literalContext;
96
111
  object_members(): Object_membersContext;
97
112
  object_member(): Object_memberContext;
113
+ object_member_separator(): Object_member_separatorContext;
98
114
  list_literal(): List_literalContext;
99
115
  elements(): ElementsContext;
100
116
  number_literal(): Number_literalContext;
101
117
  null_literal(): Null_literalContext;
102
- string_literal(): String_literalContext;
103
- string_concat(): String_concatContext;
104
118
  boolean_literal(): Boolean_literalContext;
105
119
  bad_meta_text(): Bad_meta_textContext;
106
120
  bad_member(): Bad_memberContext;
@@ -130,14 +144,23 @@ export declare class PrologContext extends ParserRuleContext {
130
144
  export declare class Terminal_stmtContext extends ParserRuleContext {
131
145
  constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
132
146
  TERMINAL_TOKEN(): TerminalNode;
133
- eol_list(): EolContext[];
134
- eol(i: number): EolContext;
147
+ terminal_trivia_list(): Terminal_triviaContext[];
148
+ terminal_trivia(i: number): Terminal_triviaContext;
149
+ get ruleIndex(): number;
150
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
151
+ }
152
+ export declare class Terminal_triviaContext extends ParserRuleContext {
153
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
154
+ eol(): EolContext;
155
+ full_line_comment_stmt(): Full_line_comment_stmtContext;
135
156
  get ruleIndex(): number;
136
157
  accept<Result>(visitor: YiniParserVisitor<Result>): Result;
137
158
  }
138
159
  export declare class StmtContext extends ParserRuleContext {
139
160
  constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
140
161
  eol(): EolContext;
162
+ full_line_comment_stmt(): Full_line_comment_stmtContext;
163
+ disabled_line_stmt(): Disabled_line_stmtContext;
141
164
  SECTION_HEAD(): TerminalNode;
142
165
  invalid_section_stmt(): Invalid_section_stmtContext;
143
166
  assignment(): AssignmentContext;
@@ -146,6 +169,19 @@ export declare class StmtContext extends ParserRuleContext {
146
169
  get ruleIndex(): number;
147
170
  accept<Result>(visitor: YiniParserVisitor<Result>): Result;
148
171
  }
172
+ export declare class Full_line_comment_stmtContext extends ParserRuleContext {
173
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
174
+ FULL_LINE_COMMENT(): TerminalNode;
175
+ eol(): EolContext;
176
+ get ruleIndex(): number;
177
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
178
+ }
179
+ export declare class Disabled_line_stmtContext extends ParserRuleContext {
180
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
181
+ DISABLED_LINE(): TerminalNode;
182
+ get ruleIndex(): number;
183
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
184
+ }
149
185
  export declare class Invalid_section_stmtContext extends ParserRuleContext {
150
186
  constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
151
187
  INVALID_SECTION_HEAD(): TerminalNode;
@@ -163,13 +199,27 @@ export declare class Meta_stmtContext extends ParserRuleContext {
163
199
  }
164
200
  export declare class DirectiveContext extends ParserRuleContext {
165
201
  constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
166
- YINI_TOKEN(): TerminalNode;
167
- eol(): EolContext;
202
+ yini_directive(): Yini_directiveContext;
168
203
  INCLUDE_TOKEN(): TerminalNode;
204
+ eol(): EolContext;
169
205
  string_literal(): String_literalContext;
170
206
  get ruleIndex(): number;
171
207
  accept<Result>(visitor: YiniParserVisitor<Result>): Result;
172
208
  }
209
+ export declare class Yini_directiveContext extends ParserRuleContext {
210
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
211
+ YINI_TOKEN(): TerminalNode;
212
+ eol(): EolContext;
213
+ yini_mode_declaration(): Yini_mode_declarationContext;
214
+ get ruleIndex(): number;
215
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
216
+ }
217
+ export declare class Yini_mode_declarationContext extends ParserRuleContext {
218
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
219
+ KEY(): TerminalNode;
220
+ get ruleIndex(): number;
221
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
222
+ }
173
223
  export declare class AnnotationContext extends ParserRuleContext {
174
224
  constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
175
225
  DEPRECATED_TOKEN(): TerminalNode;
@@ -200,13 +250,53 @@ export declare class MemberContext extends ParserRuleContext {
200
250
  accept<Result>(visitor: YiniParserVisitor<Result>): Result;
201
251
  }
202
252
  export declare class ValueContext extends ParserRuleContext {
253
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
254
+ concat_expression(): Concat_expressionContext;
255
+ scalar_value(): Scalar_valueContext;
256
+ list_literal(): List_literalContext;
257
+ object_literal(): Object_literalContext;
258
+ get ruleIndex(): number;
259
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
260
+ }
261
+ export declare class Scalar_valueContext extends ParserRuleContext {
203
262
  constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
204
263
  null_literal(): Null_literalContext;
205
264
  string_literal(): String_literalContext;
206
265
  number_literal(): Number_literalContext;
207
266
  boolean_literal(): Boolean_literalContext;
208
- list_literal(): List_literalContext;
209
- object_literal(): Object_literalContext;
267
+ get ruleIndex(): number;
268
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
269
+ }
270
+ export declare class Concat_expressionContext extends ParserRuleContext {
271
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
272
+ STRING(): TerminalNode;
273
+ concat_tail_list(): Concat_tailContext[];
274
+ concat_tail(i: number): Concat_tailContext;
275
+ get ruleIndex(): number;
276
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
277
+ }
278
+ export declare class Concat_tailContext extends ParserRuleContext {
279
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
280
+ PLUS(): TerminalNode;
281
+ concat_operand(): Concat_operandContext;
282
+ NL_list(): TerminalNode[];
283
+ NL(i: number): TerminalNode;
284
+ get ruleIndex(): number;
285
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
286
+ }
287
+ export declare class Concat_operandContext extends ParserRuleContext {
288
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
289
+ STRING(): TerminalNode;
290
+ NUMBER(): TerminalNode;
291
+ BOOLEAN_TRUE(): TerminalNode;
292
+ BOOLEAN_FALSE(): TerminalNode;
293
+ NULL(): TerminalNode;
294
+ get ruleIndex(): number;
295
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
296
+ }
297
+ export declare class String_literalContext extends ParserRuleContext {
298
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
299
+ STRING(): TerminalNode;
210
300
  get ruleIndex(): number;
211
301
  accept<Result>(visitor: YiniParserVisitor<Result>): Result;
212
302
  }
@@ -235,10 +325,15 @@ export declare class Object_membersContext extends ParserRuleContext {
235
325
  export declare class Object_memberContext extends ParserRuleContext {
236
326
  constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
237
327
  KEY(): TerminalNode;
238
- COLON(): TerminalNode;
328
+ object_member_separator(): Object_member_separatorContext;
239
329
  value(): ValueContext;
240
- NL_list(): TerminalNode[];
241
- NL(i: number): TerminalNode;
330
+ get ruleIndex(): number;
331
+ accept<Result>(visitor: YiniParserVisitor<Result>): Result;
332
+ }
333
+ export declare class Object_member_separatorContext extends ParserRuleContext {
334
+ constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
335
+ COLON(): TerminalNode;
336
+ EQ(): TerminalNode;
242
337
  get ruleIndex(): number;
243
338
  accept<Result>(visitor: YiniParserVisitor<Result>): Result;
244
339
  }
@@ -276,23 +371,6 @@ export declare class Null_literalContext extends ParserRuleContext {
276
371
  get ruleIndex(): number;
277
372
  accept<Result>(visitor: YiniParserVisitor<Result>): Result;
278
373
  }
279
- export declare class String_literalContext extends ParserRuleContext {
280
- constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
281
- STRING(): TerminalNode;
282
- string_concat_list(): String_concatContext[];
283
- string_concat(i: number): String_concatContext;
284
- get ruleIndex(): number;
285
- accept<Result>(visitor: YiniParserVisitor<Result>): Result;
286
- }
287
- export declare class String_concatContext extends ParserRuleContext {
288
- constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
289
- PLUS(): TerminalNode;
290
- STRING(): TerminalNode;
291
- NL_list(): TerminalNode[];
292
- NL(i: number): TerminalNode;
293
- get ruleIndex(): number;
294
- accept<Result>(visitor: YiniParserVisitor<Result>): Result;
295
- }
296
374
  export declare class Boolean_literalContext extends ParserRuleContext {
297
375
  constructor(parser?: YiniParser, parent?: ParserRuleContext, invokingState?: number);
298
376
  BOOLEAN_TRUE(): TerminalNode;