]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/TianoTools/Pccts/dlg/dlg.h
Fix some cleanall issues
[mirror_edk2.git] / Tools / Source / TianoTools / Pccts / dlg / dlg.h
CommitLineData
878ddf1f 1/* dlg header file\r
2 *\r
3 * SOFTWARE RIGHTS\r
4 *\r
5 * We reserve no LEGAL rights to the Purdue Compiler Construction Tool\r
6 * Set (PCCTS) -- PCCTS is in the public domain. An individual or\r
7 * company may do whatever they wish with source code distributed with\r
8 * PCCTS or the code generated by PCCTS, including the incorporation of\r
9 * PCCTS, or its output, into commerical software.\r
10 *\r
11 * We encourage users to develop software with PCCTS. However, we do ask\r
12 * that credit is given to us for developing PCCTS. By "credit",\r
13 * we mean that if you incorporate our source code into one of your\r
14 * programs (commercial product, research project, or otherwise) that you\r
15 * acknowledge this fact somewhere in the documentation, research report,\r
16 * etc... If you like PCCTS and have developed a nice tool with the\r
17 * output, please mention that you developed it using PCCTS. In\r
18 * addition, we ask that this header remain intact in our source code.\r
19 * As long as these guidelines are kept, we expect to continue enhancing\r
20 * this system and expect to make other tools available as they are\r
21 * completed.\r
22 *\r
23 * DLG 1.33\r
24 * Will Cohen\r
25 * With mods by Terence Parr; AHPCRC, University of Minnesota\r
26 * 1989-2001\r
27 */\r
28\r
29/* MR1 Move pcctscfg.h to top of file */\r
30\r
31#include "pcctscfg.h" \r
32\r
33/* turn off warnings for unreferenced labels */\r
34\r
35#ifdef _MSC_VER\r
36#pragma warning(disable:4102)\r
37#endif\r
38\r
39#include "set.h"\r
40\r
41#define TRUE 1\r
42#define FALSE 0\r
43\r
44/***** output related stuff *******************/\r
45#define IN input_stream\r
46#define OUT output_stream\r
47\r
48#define MAX_MODES 50 /* number of %%names allowed */\r
49#define MAX_ON_LINE 10\r
50\r
51#define NFA_MIN 64 /* minimum nfa_array size */\r
52#define DFA_MIN 64 /* minimum dfa_array size */\r
53\r
54#define DEFAULT_CLASSNAME "DLGLexer"\r
55\r
56/* these macros allow the size of the character set to be easily changed */\r
57/* NOTE: do NOT change MIN_CHAR since EOF is the lowest char, -1 */\r
58#define MIN_CHAR (-1) /* lowest possible character possible on input */\r
59#define MAX_CHAR 255 /* highest possible character possible on input */\r
60#define CHAR_RANGE (1+(MAX_CHAR) - (MIN_CHAR))\r
61\r
62/* indicates that the not an "array" reference */\r
63#define NIL_INDEX 0\r
64\r
65/* size of hash table used to find dfa_states quickly */\r
66#define HASH_SIZE 211\r
67\r
68#define nfa_node struct _nfa_node\r
69nfa_node {\r
70 int node_no;\r
71 int nfa_set;\r
72 int accept; /* what case to use */\r
73 nfa_node *trans[2];\r
74 set label; /* one arc always labelled with epsilon */\r
75};\r
76\r
77#define dfa_node struct _dfa_node\r
78dfa_node {\r
79 int node_no;\r
80 int dfa_set;\r
81 int alternatives; /* used for interactive mode */\r
82 /* are more characters needed */\r
83 int done;\r
84 set nfa_states;\r
85 int trans[1];/* size of transition table depends on\r
86 * number of classes required for automata.\r
87 */\r
88\r
89\r
90};\r
91\r
92/******** macros for accessing the NFA and DFA nodes ****/\r
93#define NFA(x) (nfa_array[x])\r
94#define DFA(x) (dfa_array[x])\r
95#define DFA_NO(x) ( (x) ? (x)->node_no : NIL_INDEX)\r
96#define NFA_NO(x) ( (x) ? (x)->node_no : NIL_INDEX)\r
97\r
98/******** wrapper for memory checking ***/\r
99/*#define malloc(x) dlg_malloc((x),__FILE__,__LINE__)*/\r
100\r
101/*#define calloc(x,y) dlg_calloc((x),(y),__FILE__,__LINE__)*/\r
102\r
103/******** antlr attributes *************/\r
104typedef struct {\r
105 unsigned char letter;\r
106 nfa_node *l,*r;\r
107 set label;\r
108 } Attrib;\r
109\r
110#define zzcr_attr(attr, token, text) { \\r
111 (attr)->letter = text[0]; (attr)->l = NULL; \\r
112 (attr)->r = NULL; (attr)->label = empty; \\r
113}\r
114#define zzd_attr(a) set_free((a)->label);\r
115\r
116/******************** Variable ******************************/\r
117extern char program[]; /* tells what program this is */\r
118extern char version[]; /* tells what version this is */\r
119extern char *file_str[]; /* file names being used */\r
120extern int err_found; /* flag to indicate error occured */\r
121extern int action_no; /* last action function printed */\r
122extern int func_action; /* should actions be turned into functions?*/\r
123extern set used_chars; /* used to label trans. arcs */\r
124extern set used_classes; /* classes or chars used to label trans. arcs */\r
125extern int class_no; /* number of classes used */\r
126extern set class_sets[]; /* shows char. in each class */\r
127extern set normal_chars; /* mask off unused portion of set */\r
128extern int comp_level; /* what compression level to use */\r
129extern int interactive; /* interactive scanner (avoid lookahead)*/\r
130extern int mode_counter; /* keeps track of the number of %%name */\r
131extern int dfa_basep[]; /* start of each group of dfa */\r
132extern int dfa_class_nop[];/* number of transistion arcs in */\r
133 /* each dfa in each mode */\r
134extern int nfa_allocated;\r
135extern int dfa_allocated;\r
136extern nfa_node **nfa_array; /* start of nfa "array" */\r
137extern dfa_node **dfa_array; /* start of dfa "array" */\r
138extern int operation_no; /* unique number for each operation */\r
139extern FILE *input_stream; /* where description read from */\r
140extern FILE *output_stream; /* where to put the output */\r
141extern FILE *mode_stream; /* where to put the mode output */\r
142extern FILE *class_stream;\r
143extern char *mode_file; /* name of file for mode output */\r
144extern int gen_ansi; /* produce ansi compatible code */\r
145extern int case_insensitive;/* ignore case of input spec. */\r
146extern int warn_ambig; /* show if regular expressions ambiguous */\r
147extern int gen_cpp;\r
148extern char *cl_file_str;\r
149extern int firstLexMember; /* MR1 */\r
150extern char *OutputDirectory;\r
151extern char *class_name;\r
152\r
153/******************** Functions ******************************/\r
154#ifdef __USE_PROTOS\r
155extern char *dlg_malloc(int, char *, int); /* wrapper malloc */\r
156extern char *dlg_calloc(int, int, char *, int); /* wrapper calloc */\r
157extern int reach(unsigned *, register int, unsigned *);\r
158extern set closure(set *, unsigned *);\r
159extern dfa_node *new_dfa_node(set);\r
160extern nfa_node *new_nfa_node(void);\r
161extern dfa_node *dfastate(set);\r
162extern dfa_node **nfa_to_dfa(nfa_node *);\r
163extern void internal_error(char *, char *, int); /* MR9 23-Sep-97 */\r
164extern FILE *read_stream(char *); /* opens file for reading */\r
165extern FILE *write_stream(char *); /* opens file for writing */\r
166extern void make_nfa_model_node(void);\r
167extern void make_dfa_model_node(int);\r
168extern char *ClassName(char *);\r
169extern char *OutMetaName(char *);\r
170extern void error(char*, int);\r
171extern void warning(char*, int);\r
172extern void p_head(void);\r
173extern void p_class_hdr(void);\r
174extern void p_includes(void);\r
175extern void p_tables(void);\r
176extern void p_tail(void); /* MR1 */\r
177extern void p_class_def1(void); /* MR1 */\r
178extern void new_automaton_mode(void); /* MR1 */\r
179extern int relabel(nfa_node *,int); /* MR1 */\r
180extern void p_shift_table(int); /* MR1 */\r
181extern void p_bshift_table(void); /* MR1 */\r
182extern void p_class_table(void); /* MR1 */\r
183extern void p_mode_def(char *,int); /* MR1 */\r
184extern void init(void); /* MR1 */\r
185extern void p_class_def2(void); /* MR1 */\r
186extern void clear_hash(void); /* MR1 */\r
187extern void p_alternative_table(void); /* MR1 */\r
188extern void p_node_table(void); /* MR1 */\r
189extern void p_dfa_table(void); /* MR1 */\r
190extern void p_accept_table(void); /* MR1 */\r
191extern void p_action_table(void); /* MR1 */\r
192extern void p_base_table(void); /* MR1 */\r
193extern void p_single_node(int,int); /* MR1 */\r
194extern char * minsize(int); /* MR1 */\r
195extern void close1(nfa_node *,int,set *); /* MR1 */\r
196extern void partition(nfa_node *,int); /* MR1 */\r
197extern void intersect_nfa_labels(nfa_node *,set *); /* MR1 */\r
198extern void r_intersect(nfa_node *,set *); /* MR1 */\r
199extern void label_node(nfa_node *); /* MR1 */\r
200extern void label_with_classes(nfa_node *); /* MR1 */\r
201\r
202#else\r
203extern char *dlg_malloc(); /* wrapper malloc */\r
204extern char *dlg_calloc(); /* wrapper calloc */\r
205extern int reach();\r
206extern set closure();\r
207extern dfa_node *new_dfa_node();\r
208extern nfa_node *new_nfa_node();\r
209extern dfa_node *dfastate();\r
210extern dfa_node **nfa_to_dfa();\r
211extern void internal_error(); /* MR9 23-Sep-97 */\r
212extern FILE *read_stream(); /* opens file for reading */\r
213extern FILE *write_stream(); /* opens file for writing */\r
214extern void make_nfa_model_node();\r
215extern void make_dfa_model_node();\r
216extern char *ClassName();\r
217extern char *OutMetaName();\r
218extern void error();\r
219extern void warning();\r
220extern void p_head(); /* MR9 */\r
221extern void p_class_hdr(); /* MR9 */\r
222extern void p_includes(); /* MR9 */\r
223extern void p_tables(); /* MR9 */\r
224extern void p_tail(); /* MR1 */\r
225extern void p_class_def1(); /* MR1 */\r
226extern void new_automaton_mode(); /* MR1 */\r
227extern int relabel(); /* MR1 */\r
228extern void p_shift_table(); /* MR1 */\r
229extern void p_bshift_table(); /* MR1 */\r
230extern void p_class_table(); /* MR1 */\r
231extern void p_mode_def(); /* MR1 */\r
232extern void init(); /* MR1 */\r
233extern void p_class_def2(); /* MR1 */\r
234extern void clear_hash(); /* MR1 */\r
235extern void p_alternative_table(); /* MR1 */\r
236extern void p_node_table(); /* MR1 */\r
237extern void p_dfa_table(); /* MR1 */\r
238extern void p_accept_table(); /* MR1 */\r
239extern void p_action_table(); /* MR1 */\r
240extern void p_base_table(); /* MR1 */\r
241extern void p_single_node(); /* MR1 */\r
242extern char * minsize(); /* MR1 */\r
243extern void close1(); /* MR1 */\r
244extern void partition(); /* MR1 */\r
245extern void intersect_nfa_labels(); /* MR1 */\r
246extern void r_intersect(); /* MR1 */\r
247extern void label_node(); /* MR1 */\r
248extern void label_with_classes(); /* MR1 */\r
249\r
250#endif\r