Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface ILexerConfig

Hierarchy

  • ILexerConfig

Index

Properties

Optional deferDefinitionErrorsHandling

deferDefinitionErrorsHandling: boolean

An optional flag indicating that lexer definition errors should not automatically cause an error to be raised. This can be useful when wishing to indicate lexer errors in another manner than simply throwing an error (for example in an online playground).

Optional ensureOptimizations

ensureOptimizations: boolean

When true this flag will cause the Lexer to throw an Error When it is unable to perform all of its performance optimizations.

In addition error messages will be printed to the console with details how to resolve the optimizations issues.

Use this flag to guarantee higher lexer performance. The optimizations can boost the lexer's performance anywhere from 30% to 100%+ depending on the number of TokenTypes used.

Optional errorMessageProvider

errorMessageProvider: ILexerErrorMessageProvider

A custom error message provider. Can be used to override the default error messages. For example:

  • Translating the error messages to a different languages.
  • Changing the formatting.

Optional lineTerminatorCharacters

lineTerminatorCharacters: (string | number)[]

Characters or CharCodes that represent line terminators for this lexer. This always needs to be provided when using a custom ILexerConfig.lineTerminatorsPattern. In the future this duplication may be removed or reduced.

Optional lineTerminatorsPattern

lineTerminatorsPattern: RegExp | ILineTerminatorsTester

A regExp defining custom line terminators. This will be used to calculate the line and column information.

Note that the regExp should use the global flag, for example: /\n/g

The default is: /\n|\r\n?/g

But some grammars have a different definition, for example in ECMAScript: https://www.ecma-international.org/ecma-262/8.0/index.html#sec-line-terminators U+2028 and U+2029 are also treated as line terminators.

In that case we would use /\n|\r|\u2028|\u2029/g

Note that it is also possible to supply an optimized RegExp like implementation as only a subset of the RegExp APIs is needed, ILineTerminatorsTester for details.

keep in mind that for the default pattern: /\n|\r\n?/g an optimized implementation is already built-in. This means the optimization is only relevant for lexers overriding the default pattern.

Optional positionTracking

positionTracking: "full" | "onlyStart" | "onlyOffset"

"full" location information means all six combinations of /(end|start)(Line|Column|Offset)/ properties. "onlyStart" means that only startLine, startColumn and startOffset will be tracked "onlyOffset" means that only the startOffset will be tracked.

The less position tracking the faster the Lexer will be and the less memory used. However the difference is not large (~10% On V8), thus reduced location tracking options should only be used in edge cases where every last ounce of performance is needed.

Optional safeMode

safeMode: boolean

Can be used to disable lexer optimizations If there is a suspicion they are causing incorrect behavior. Note that this would have negative performance implications.

Generated using TypeDoc