parseutils.h revision 690143cc
1/************************************************************
2 Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
3
4 Permission to use, copy, modify, and distribute this
5 software and its documentation for any purpose and without
6 fee is hereby granted, provided that the above copyright
7 notice appear in all copies and that both that copyright
8 notice and this permission notice appear in supporting
9 documentation, and that the name of Silicon Graphics not be
10 used in advertising or publicity pertaining to distribution
11 of the software without specific prior written permission.
12 Silicon Graphics makes no representation about the suitability
13 of this software for any purpose. It is provided "as is"
14 without any express or implied warranty.
15
16 SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17 SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
18 AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
19 GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
20 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21 DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
22 OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
23 THE USE OR PERFORMANCE OF THIS SOFTWARE.
24
25 ********************************************************/
26
27#ifndef XKBPARSE_H
28#define	XKBPARSE_H 1
29
30#ifndef DEBUG_VAR
31#define	DEBUG_VAR	parseDebug
32#endif
33
34#include "xkbcomp.h"
35
36extern char scanBuf[1024];
37extern int scanInt;
38extern int lineNum;
39
40extern XkbFile *rtrnValue;
41
42#ifdef DEBUG
43#define	d(str)		fprintf(stderr,"%s\n",str);
44#define d1(str,a)	fprintf(stderr,str,a);
45#define d2(str,a,b)	fprintf(stderr,str,a,b);
46#else
47#define	d(str)
48#define	d1(str,a)
49#define d2(str,a,b)
50#endif
51
52
53extern ParseCommon *AppendStmt(ParseCommon * /* to */ ,
54                               ParseCommon *    /* append */
55    );
56
57extern ExprDef *ExprCreate(unsigned /* op */ ,
58                           unsigned     /* type */
59    );
60
61extern ExprDef *ExprCreateUnary(unsigned /* op */ ,
62                                unsigned /* type */ ,
63                                ExprDef *       /* child */
64    );
65
66extern ExprDef *ExprCreateBinary(unsigned /* op */ ,
67                                 ExprDef * /* left */ ,
68                                 ExprDef *      /* right */
69    );
70
71extern KeycodeDef *KeycodeCreate(char * /* name */ ,
72                                 ExprDef *      /* value */
73    );
74
75extern KeyAliasDef *KeyAliasCreate(char * /* alias */ ,
76                                   char *       /* real */
77    );
78
79extern VModDef *VModCreate(Atom /* name */ ,
80                           ExprDef *    /* value */
81    );
82
83extern VarDef *VarCreate(ExprDef * /* name */ ,
84                         ExprDef *      /* value */
85    );
86
87extern VarDef *BoolVarCreate(Atom /* nameToken */ ,
88                             unsigned   /* set */
89    );
90
91extern InterpDef *InterpCreate(const char * /* sym_str */ ,
92                               ExprDef *        /* match */
93    );
94
95extern KeyTypeDef *KeyTypeCreate(Atom /* name */ ,
96                                 VarDef *       /* body */
97    );
98
99extern SymbolsDef *SymbolsCreate(char * /* keyName */ ,
100                                 ExprDef *      /* symbols */
101    );
102
103extern GroupCompatDef *GroupCompatCreate(int /* group */ ,
104                                         ExprDef *      /* def */
105    );
106
107extern ModMapDef *ModMapCreate(Atom /* modifier */ ,
108                               ExprDef *        /* keys */
109    );
110
111extern IndicatorMapDef *IndicatorMapCreate(Atom /* name */ ,
112                                           VarDef *     /* body */
113    );
114
115extern IndicatorNameDef *IndicatorNameCreate(int /* ndx */ ,
116                                             ExprDef * /* name */ ,
117                                             Bool       /* virtual */
118    );
119
120extern ExprDef *ActionCreate(Atom /* name */ ,
121                             ExprDef *  /* args */
122    );
123
124extern ExprDef *CreateKeysymList(char * /* sym */
125    );
126
127extern ShapeDef *ShapeDeclCreate(Atom /* name */ ,
128                                 OutlineDef *   /* outlines */
129    );
130
131extern OutlineDef *OutlineCreate(Atom /* field */ ,
132                                 ExprDef *      /* points */
133    );
134
135extern KeyDef *KeyDeclCreate(char * /* name */ ,
136                             ExprDef *  /* expr */
137    );
138
139extern KeyDef *KeyDeclMerge(KeyDef * /* into */ ,
140                            KeyDef *    /* from */
141    );
142
143extern RowDef *RowDeclCreate(KeyDef *   /* keys */
144    );
145
146extern SectionDef *SectionDeclCreate(Atom /* name */ ,
147                                     RowDef *   /* rows */
148    );
149
150extern OverlayKeyDef *OverlayKeyCreate(char * /* under */ ,
151                                       char *   /* over  */
152    );
153
154extern OverlayDef *OverlayDeclCreate(Atom /* name */ ,
155                                     OverlayKeyDef *    /* rows */
156    );
157
158extern DoodadDef *DoodadCreate(unsigned /* type */ ,
159                               Atom /* name */ ,
160                               VarDef * /* body */
161    );
162
163extern ExprDef *AppendKeysymList(ExprDef * /* list */ ,
164                                 char * /* sym */
165    );
166
167extern int LookupKeysym(const char * /* str */ ,
168                        KeySym *        /* sym_rtrn */
169    );
170
171extern IncludeStmt *IncludeCreate(char * /* str */ ,
172                                  unsigned      /* merge */
173    );
174
175extern unsigned StmtSetMerge(ParseCommon * /* stmt */ ,
176                             unsigned   /* merge */
177    );
178
179#ifdef DEBUG
180extern void PrintStmtAddrs(ParseCommon *        /* stmt */
181    );
182#endif
183
184extern int XKBParseFile(FILE * /* file */ ,
185                        XkbFile **      /* pRtrn */
186    );
187
188extern XkbFile *CreateXKBFile(int /* type */ ,
189                              char * /* name */ ,
190                              ParseCommon * /* defs */ ,
191                              unsigned  /* flags */
192    );
193
194extern void yyerror(const char *        /* s */
195    );
196
197extern int yywrap(void);
198
199extern int yylex(void);
200extern int yyparse(void);
201
202extern int setScanState(char * /* file */ ,
203                        int     /* line */
204    );
205
206extern FILE *yyin;
207
208#endif /* XKBPARSE_H */
209