/usr/include/dparser/dparse_tables.h is in mcrl2 201210.1-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | /*
Copyright 2002-2004 John Plevyak, All Rights Reserved
*/
#ifndef _dparse_tables_H_
#define _dparse_tables_H_
#define SCANNER_BLOCKS_POW2 2
#define SCANNER_BLOCKS (1 << SCANNER_BLOCKS_POW2)
#define SCANNER_BLOCK_SHIFT (8 - SCANNER_BLOCKS_POW2)
#define SCANNER_BLOCK_MASK ((1 << SCANNER_BLOCK_SHIFT) - 1)
#define SCANNER_BLOCK_SIZE (256 / SCANNER_BLOCKS)
struct D_Parser;
struct D_ShiftTable;
#define D_PN(_x, _o) ((D_ParseNode*)((char*)(_x) + _o))
typedef struct d_loc_t {
char *s, *pathname, *ws;
int col, line;
} d_loc_t;
typedef void (*D_WhiteSpaceFn)(struct D_Parser *p,
d_loc_t *loc, void **p_globals);
typedef int (*D_ScanCode)(
d_loc_t *loc, unsigned short *symbol,
int *term_priority, unsigned char *op_assoc, int *op_priority);
typedef int (*D_ReductionCode)(
void *new_ps, void **children, int n_children, int pn_offset,
struct D_Parser *parser);
typedef struct D_Reduction {
unsigned short nelements;
unsigned short symbol;
D_ReductionCode speculative_code;
D_ReductionCode final_code;
unsigned short op_assoc;
unsigned short rule_assoc;
int op_priority;
int rule_priority;
int action_index;
int npass_code;
D_ReductionCode *pass_code;
} D_Reduction;
typedef struct D_RightEpsilonHint {
unsigned short depth;
unsigned short preceeding_state;
D_Reduction *reduction;
} D_RightEpsilonHint;
typedef struct D_ErrorRecoveryHint {
unsigned short depth;
unsigned short symbol;
const char *string;
} D_ErrorRecoveryHint;
typedef struct D_Shift {
unsigned short symbol;
unsigned char shift_kind;
unsigned char op_assoc;
int op_priority;
int term_priority;
int action_index;
D_ReductionCode speculative_code;
} D_Shift;
typedef struct SB_uint8 {
D_Shift **shift;
unsigned char *scanner_block[SCANNER_BLOCKS];
} SB_uint8;
typedef struct SB_uint16 {
D_Shift **shift;
unsigned short *scanner_block[SCANNER_BLOCKS];
} SB_uint16;
typedef struct SB_uint32 {
D_Shift **shift;
unsigned int *scanner_block[SCANNER_BLOCKS];
} SB_uint32;
typedef struct SB_trans_uint8 {
unsigned char *scanner_block[SCANNER_BLOCKS];
} SB_trans_uint8;
typedef struct SB_trans_uint16 {
unsigned short *scanner_block[SCANNER_BLOCKS];
} SB_trans_uint16;
typedef struct SB_trans_uint32 {
unsigned int *scanner_block[SCANNER_BLOCKS];
} SB_trans_uint32;
#define D_SCAN_ALL 0
#define D_SCAN_LONGEST 1
#define D_SCAN_MIXED 2
#define D_SCAN_TRAILING 3
#define D_SCAN_RESERVED 4
#define D_SCAN_DEFAULT D_SCAN_ALL
typedef struct D_State {
unsigned char *goto_valid;
int goto_table_offset;
struct {
unsigned int n;
D_Reduction **v;
} reductions;
struct {
unsigned int n;
D_RightEpsilonHint *v;
} right_epsilon_hints;
struct {
unsigned int n;
D_ErrorRecoveryHint *v;
} error_recovery_hints;
int shifts;
D_ScanCode scanner_code;
void* scanner_table;
unsigned char scanner_size;
unsigned char accept;
unsigned char scan_kind;
void* transition_table;
D_Shift ***accepts_diff;
int reduces_to;
} D_State;
#define D_SHIFTS_CODE ((D_Shift**)-1)
#define D_SYMBOL_NTERM 1
#define D_SYMBOL_INTERNAL 2
#define D_SYMBOL_EBNF 3
#define D_SYMBOL_STRING 4
#define D_SYMBOL_REGEX 5
#define D_SYMBOL_CODE 6
#define D_SYMBOL_TOKEN 7
typedef struct D_Symbol {
unsigned int kind;
const char *name;
int name_len;
int start_symbol;
} D_Symbol;
#define D_PASS_PRE_ORDER 0x0001
#define D_PASS_POST_ORDER 0x0002
#define D_PASS_MANUAL 0x0004
#define D_PASS_FOR_ALL 0x0008
#define D_PASS_FOR_UNDEFINED 0x0010
typedef struct D_Pass {
char *name;
unsigned int name_len;
unsigned int kind;
unsigned int index;
} D_Pass;
typedef struct D_ParserTables {
unsigned int nstates;
D_State *state;
unsigned short *goto_table;
unsigned int whitespace_state;
unsigned int nsymbols;
D_Symbol *symbols;
D_WhiteSpaceFn default_white_space;
unsigned int npasses;
D_Pass *passes;
unsigned int save_parse_tree;
} D_ParserTables;
void parse_whitespace(struct D_Parser *p, d_loc_t *loc, void **p_globals);
#endif
|