2024-07-08 22:31:15 +02:00
|
|
|
import type { ITokenizer } from 'strtok3';
|
2021-12-10 17:01:45 +01:00
|
|
|
|
2024-08-08 10:19:14 +02:00
|
|
|
import type { ITokenParser } from '../ParserFactory.js';
|
2024-08-28 15:31:39 +02:00
|
|
|
import type { IOptions, } from '../type.js';
|
2024-08-08 10:19:14 +02:00
|
|
|
import type { INativeMetadataCollector } from './MetadataCollector.js';
|
2018-07-30 20:55:27 +02:00
|
|
|
|
|
|
|
|
export abstract class BasicParser implements ITokenParser {
|
|
|
|
|
|
2025-03-29 17:26:10 +02:00
|
|
|
protected readonly metadata: INativeMetadataCollector;
|
|
|
|
|
|
|
|
|
|
protected readonly tokenizer: ITokenizer;
|
|
|
|
|
|
|
|
|
|
protected readonly options: IOptions;
|
|
|
|
|
|
2018-07-30 20:55:27 +02:00
|
|
|
/**
|
|
|
|
|
* Initialize parser with output (metadata), input (tokenizer) & parsing options (options).
|
2018-08-12 19:39:47 +02:00
|
|
|
* @param {INativeMetadataCollector} metadata Output
|
2018-07-30 20:55:27 +02:00
|
|
|
* @param {ITokenizer} tokenizer Input
|
|
|
|
|
* @param {IOptions} options Parsing options
|
|
|
|
|
*/
|
2024-08-28 15:31:39 +02:00
|
|
|
constructor(
|
2025-03-29 17:26:10 +02:00
|
|
|
metadata: INativeMetadataCollector,
|
|
|
|
|
tokenizer: ITokenizer,
|
|
|
|
|
options: IOptions
|
2024-08-28 15:31:39 +02:00
|
|
|
) {
|
2025-03-29 17:26:10 +02:00
|
|
|
this.metadata = metadata;
|
|
|
|
|
this.tokenizer = tokenizer;
|
|
|
|
|
this.options = options;
|
2018-07-30 20:55:27 +02:00
|
|
|
}
|
|
|
|
|
|
2024-08-09 09:57:18 +02:00
|
|
|
public abstract parse(): Promise<void>;
|
2018-08-02 23:32:43 +02:00
|
|
|
}
|