SymbolMap.d.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { Attributes, Args, ParseMethod, ParseInput, ParseResult } from './Types.js';
  2. import { Symbol, Macro } from './Symbol.js';
  3. export interface SymbolMap {
  4. name: string;
  5. parser: ParseMethod;
  6. contains(symbol: string): boolean;
  7. parserFor(symbol: string): ParseMethod;
  8. parse([env, symbol]: ParseInput): ParseResult;
  9. }
  10. export declare function parseResult(result: ParseResult): ParseResult;
  11. export declare abstract class AbstractSymbolMap<T> implements SymbolMap {
  12. private _name;
  13. private _parser;
  14. constructor(_name: string, _parser: ParseMethod);
  15. get name(): string;
  16. abstract contains(symbol: string): boolean;
  17. parserFor(symbol: string): ParseMethod;
  18. parse([env, symbol]: ParseInput): ParseResult;
  19. set parser(parser: ParseMethod);
  20. get parser(): ParseMethod;
  21. abstract lookup(symbol: string): T;
  22. }
  23. export declare class RegExpMap extends AbstractSymbolMap<string> {
  24. private _regExp;
  25. constructor(name: string, parser: ParseMethod, _regExp: RegExp);
  26. contains(symbol: string): boolean;
  27. lookup(symbol: string): string;
  28. }
  29. export declare abstract class AbstractParseMap<K> extends AbstractSymbolMap<K> {
  30. private map;
  31. lookup(symbol: string): K;
  32. contains(symbol: string): boolean;
  33. add(symbol: string, object: K): void;
  34. remove(symbol: string): void;
  35. }
  36. export declare class CharacterMap extends AbstractParseMap<Symbol> {
  37. constructor(name: string, parser: ParseMethod, json: {
  38. [index: string]: string | [string, Attributes];
  39. });
  40. }
  41. export declare class DelimiterMap extends CharacterMap {
  42. parse([env, symbol]: ParseInput): ParseResult;
  43. }
  44. export declare class MacroMap extends AbstractParseMap<Macro> {
  45. constructor(name: string, json: {
  46. [index: string]: string | Args[];
  47. }, functionMap: Record<string, ParseMethod>);
  48. parserFor(symbol: string): ParseMethod;
  49. parse([env, symbol]: ParseInput): ParseResult;
  50. }
  51. export declare class CommandMap extends MacroMap {
  52. parse([env, symbol]: ParseInput): ParseResult;
  53. }
  54. export declare class EnvironmentMap extends MacroMap {
  55. constructor(name: string, parser: ParseMethod, json: {
  56. [index: string]: string | Args[];
  57. }, functionMap: Record<string, ParseMethod>);
  58. parse([env, symbol]: ParseInput): ParseResult;
  59. }