@tracespace/parser
Version:
Gerber and NC drill file parser
38 lines (37 loc) • 983 B
TypeScript
import Moo from 'moo';
import { Token } from './tokens';
export declare type LexerState = Moo.LexerState;
export * from './tokens';
/**
* {@linkcode Lexer} factory
*
* @example
* ```ts
* import {createLexer} from '@tracespace/parser'
*
* const lexer = createLexer()
*
* lexer.reset('G04 gerber string*\nM02*\n')
*
* Array.from(lexer).forEach(token => {
* console.log(`${token.type}: ${token.value}`)
* })
* ```
*
* @category Lexer
*/
export declare function createLexer(): Lexer;
/**
* The lexing module of the parser. The Lexer is generated by
* {@link https://github.com/no-context/moo | Moo}, which determines its API.
*
* @category Lexer
*/
export interface Lexer extends Moo.Lexer {
/** Cursor position in the current chunk */
index?: number;
/** Retrieve the next token from the chunk if available */
next(): Token | undefined;
/** The Lexer may be treated as an iterator to get tokens */
[Symbol.iterator](): Iterator<Token>;
}