summaryrefslogtreecommitdiff
path: root/school/node_modules/graphql/language/lexer.d.ts
blob: 40dbf9a6b2d98874ef2bc5bd7f47488cf0f39264 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { Token } from './ast';
import { Source } from './source';
import { TokenKindEnum } from './tokenKind';

/**
 * Given a Source object, this returns a Lexer for that source.
 * A Lexer is a stateful stream generator in that every time
 * it is advanced, it returns the next token in the Source. Assuming the
 * source lexes, the final Token emitted by the lexer will be of kind
 * EOF, after which the lexer will repeatedly return the same EOF token
 * whenever called.
 */
export class Lexer {
  source: Source;

  /**
   * The previously focused non-ignored token.
   */
  lastToken: Token;

  /**
   * The currently focused non-ignored token.
   */
  token: Token;

  /**
   * The (1-indexed) line containing the current token.
   */
  line: number;

  /**
   * The character offset at which the current line begins.
   */
  lineStart: number;

  constructor(source: Source);

  /**
   * Advances the token stream to the next non-ignored token.
   */
  advance(): Token;

  /**
   * Looks ahead and returns the next non-ignored token, but does not change
   * the state of Lexer.
   */
  lookahead(): Token;
}

/**
 * @internal
 */
export function isPunctuatorToken(token: Token): boolean;

/**
 * @internal
 */
export function isPunctuatorTokenKind(kind: TokenKindEnum): boolean;