YugabyteDB (2.13.0.0-b42, bfc6a6643e7399ac8a0e81d06a3ee6d6571b33ab)

Coverage Report

Created: 2022-03-09 17:30

/Users/deen/code/yugabyte-db/src/postgres/src/include/parser/gramparse.h
Line
Count
Source
1
/*-------------------------------------------------------------------------
2
 *
3
 * gramparse.h
4
 *    Shared definitions for the "raw" parser (flex and bison phases only)
5
 *
6
 * NOTE: this file is only meant to be included in the core parsing files,
7
 * ie, parser.c, gram.y, scan.l, and src/common/keywords.c.
8
 * Definitions that are needed outside the core parser should be in parser.h.
9
 *
10
 *
11
 * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
12
 * Portions Copyright (c) 1994, Regents of the University of California
13
 *
14
 * src/include/parser/gramparse.h
15
 *
16
 *-------------------------------------------------------------------------
17
 */
18
19
#ifndef GRAMPARSE_H
20
#define GRAMPARSE_H
21
22
#include "nodes/parsenodes.h"
23
#include "parser/scanner.h"
24
25
/*
26
 * NB: include gram.h only AFTER including scanner.h, because scanner.h
27
 * is what #defines YYLTYPE.
28
 */
29
#include "parser/gram.h"
30
31
/*
32
 * The YY_EXTRA data that a flex scanner allows us to pass around.  Private
33
 * state needed for raw parsing/lexing goes here.
34
 */
35
typedef struct base_yy_extra_type
36
{
37
  /*
38
   * Fields used by the core scanner.
39
   */
40
  core_yy_extra_type core_yy_extra;
41
42
  /*
43
   * State variables for base_yylex().
44
   */
45
  bool    have_lookahead; /* is lookahead info valid? */
46
  int     lookahead_token;  /* one-token lookahead */
47
  core_YYSTYPE lookahead_yylval;  /* yylval for lookahead token */
48
  YYLTYPE   lookahead_yylloc; /* yylloc for lookahead token */
49
  char     *lookahead_end;  /* end of current token */
50
  char    lookahead_hold_char;  /* to be put back at *lookahead_end */
51
52
  /*
53
   * State variables that belong to the grammar.
54
   */
55
  List     *parsetree;    /* final parse result is delivered here */
56
} base_yy_extra_type;
57
58
/*
59
 * In principle we should use yyget_extra() to fetch the yyextra field
60
 * from a yyscanner struct.  However, flex always puts that field first,
61
 * and this is sufficiently performance-critical to make it seem worth
62
 * cheating a bit to use an inline macro.
63
 */
64
5.77M
#define pg_yyget_extra(yyscanner) (*((base_yy_extra_type **) (yyscanner)))
65
66
67
/* from parser.c */
68
extern int base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp,
69
       core_yyscan_t yyscanner);
70
71
/* from gram.y */
72
extern void parser_init(base_yy_extra_type *yyext);
73
extern int  base_yyparse(core_yyscan_t yyscanner);
74
75
#endif              /* GRAMPARSE_H */