OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [gengtype.h] - Blame information for rev 847

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 280 jeremybenn
/* Process source files and output type information.
2
   Copyright (C) 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
3
 
4
This file is part of GCC.
5
 
6
GCC is free software; you can redistribute it and/or modify it under
7
the terms of the GNU General Public License as published by the Free
8
Software Foundation; either version 3, or (at your option) any later
9
version.
10
 
11
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12
WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14
for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GCC; see the file COPYING3.  If not see
18
<http://www.gnu.org/licenses/>.  */
19
 
20
#ifndef GCC_GENGTYPE_H
21
#define GCC_GENGTYPE_H
22
 
23
/* A file position, mostly for error messages.
24
   The FILE element may be compared using pointer equality.  */
25
struct fileloc {
26
  const char *file;
27
  int line;
28
};
29
 
30
/* Data types handed around within, but opaque to, the lexer and parser.  */
31
typedef struct pair *pair_p;
32
typedef struct type *type_p;
33
typedef const struct type *const_type_p;
34
typedef struct options *options_p;
35
 
36
/* Variables used to communicate between the lexer and the parser.  */
37
extern int lexer_toplevel_done;
38
extern struct fileloc lexer_line;
39
 
40
/* Print an error message.  */
41
extern void error_at_line
42
  (struct fileloc *pos, const char *msg, ...) ATTRIBUTE_PRINTF_2;
43
 
44
/* Like asprintf, but calls fatal() on out of memory.  */
45
extern char *xasprintf(const char *, ...) ATTRIBUTE_PRINTF_1;
46
 
47
/* Constructor routines for types.  */
48
extern void do_typedef (const char *s, type_p t, struct fileloc *pos);
49
extern void do_scalar_typedef (const char *s, struct fileloc *pos);
50
extern type_p resolve_typedef (const char *s, struct fileloc *pos);
51
extern type_p new_structure (const char *name, int isunion,
52
                             struct fileloc *pos, pair_p fields,
53
                             options_p o);
54
extern type_p find_structure (const char *s, int isunion);
55
extern type_p create_scalar_type (const char *name);
56
extern type_p create_pointer (type_p t);
57
extern type_p create_array (type_p t, const char *len);
58
extern options_p create_option (options_p, const char *name, const void *info);
59
extern options_p create_nested_ptr_option (options_p, type_p t,
60
                                           const char *from, const char *to);
61
extern pair_p create_field_at (pair_p next, type_p type, const char *name,
62
                               options_p opt, struct fileloc *pos);
63
extern pair_p nreverse_pairs (pair_p list);
64
extern type_p adjust_field_type (type_p, options_p);
65
extern void note_variable (const char *s, type_p t, options_p o,
66
                           struct fileloc *pos);
67
extern void note_def_vec (const char *type_name, bool is_scalar,
68
                          struct fileloc *pos);
69
extern void note_def_vec_alloc (const char *type, const char *astrat,
70
                                struct fileloc *pos);
71
 
72
/* Lexer and parser routines.  */
73
extern int yylex (const char **yylval);
74
extern void yybegin (const char *fname);
75
extern void yyend (void);
76
extern void parse_file (const char *name);
77
extern bool hit_error;
78
 
79
/* Token codes.  */
80
enum {
81
  EOF_TOKEN = 0,
82
 
83
  /* Per standard convention, codes in the range (0, UCHAR_MAX]
84
     represent single characters with those character codes.  */
85
 
86
  CHAR_TOKEN_OFFSET = UCHAR_MAX + 1,
87
  GTY_TOKEN = CHAR_TOKEN_OFFSET,
88
  TYPEDEF,
89
  EXTERN,
90
  STATIC,
91
  UNION,
92
  STRUCT,
93
  ENUM,
94
  VEC_TOKEN,
95
  DEFVEC_OP,
96
  DEFVEC_I,
97
  DEFVEC_ALLOC,
98
  ELLIPSIS,
99
  PTR_ALIAS,
100
  NESTED_PTR,
101
  PARAM_IS,
102
  NUM,
103
  SCALAR,
104
  ID,
105
  STRING,
106
  CHAR,
107
  ARRAY,
108
 
109
  /* print_token assumes that any token >= FIRST_TOKEN_WITH_VALUE may have
110
     a meaningful value to be printed.  */
111
  FIRST_TOKEN_WITH_VALUE = PARAM_IS
112
};
113
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.