Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/RenderSystems/GL/src/nvparse/rc1.0_tokens.l @ 3

Last change on this file since 3 was 3, checked in by anonymous, 17 years ago

=update

File size: 8.5 KB
Line 
1/* definitions */
2digit    [0-9]
3char     [a-zA-Z_.]
4alphanum [0-9a-zA-Z_]
5
6%option prefix="rc10_"
7%{  /* code to be included */
8
9#include <stdlib.h>
10#include "rc1.0_combiners.h"
11#include "_rc1.0_parser.h"
12
13#include "nvparse_errors.h"
14#include "nvparse_externs.h"
15
16#define YY_INPUT(buf,result,max_size) \
17{ \
18    result = 0;                        \
19    while (*myin && result < max_size) \
20    buf[result++] = *myin++;           \
21}
22
23#define YY_ALWAYS_INTERACTIVE 1
24
25%}
26/* end of definitions */
27%%
28
29\/\*                    {
30                            A:
31                                switch (yyinput()) {
32                                  case '*': goto B;
33                                  case 0: errors.set("end-of-file in comment", line_number); break;
34                                  case '\n': line_number++;
35                                  default:  goto A;
36                                }
37                            B:
38                                switch (yyinput()) {
39                                  case '*': goto B;
40                                  case '/': break;
41                                  case 0: errors.set("end-of-file in comment", line_number); break;
42                                  case '\n': line_number++;
43                                  default:  goto A;
44                                }
45                        }
46
47\/\/            {
48                            char ch;
49                            while ((ch = yyinput()) != '\n');
50                            if (ch == '\n') line_number++;
51                        }
52
53\#                      {
54                            char ch;
55                            while ((ch = yyinput()) != '\n');
56                            if (ch == '\n') line_number++;
57                        }
58
59!!RC1\.0        { /* eat header */ }
60
61fog\.rgb        {
62                            rc10_lval.registerEnum.word = RCP_FOG_RGB;
63                            return(regVariable);
64                        }
65fog\.a          {
66                            rc10_lval.registerEnum.word = RCP_FOG_ALPHA;
67                            return(regVariable);
68                        }
69fog\.b          {
70                            rc10_lval.registerEnum.word = RCP_FOG_BLUE;
71                            return(regVariable);
72                        }
73fog                     {
74                            rc10_lval.registerEnum.word = RCP_FOG;
75                            return(regVariable);
76                        }
77
78col0\.rgb       {
79                            rc10_lval.registerEnum.word = RCP_PRIMARY_COLOR_RGB;
80                            return(regVariable);
81                        }
82col0\.a         {
83                            rc10_lval.registerEnum.word = RCP_PRIMARY_COLOR_ALPHA;
84                            return(regVariable);
85                        }
86col0\.b         {
87                            rc10_lval.registerEnum.word = RCP_PRIMARY_COLOR_BLUE;
88                            return(regVariable);
89                        }
90col0            {
91                            rc10_lval.registerEnum.word = RCP_PRIMARY_COLOR;
92                            return(regVariable);
93                        }
94
95col1\.rgb       {
96                            rc10_lval.registerEnum.word = RCP_SECONDARY_COLOR_RGB;
97                            return(regVariable);
98                        }
99col1\.a         {
100                            rc10_lval.registerEnum.word = RCP_SECONDARY_COLOR_ALPHA;
101                            return(regVariable);
102                        }
103col1\.b         {
104                            rc10_lval.registerEnum.word = RCP_SECONDARY_COLOR_BLUE;
105                            return(regVariable);
106                        }
107col1            {
108                            rc10_lval.registerEnum.word = RCP_SECONDARY_COLOR;
109                            return(regVariable);
110                        }
111
112spare0\.rgb     {
113                            rc10_lval.registerEnum.word = RCP_SPARE0_RGB;
114                            return(regVariable);
115                        }
116spare0\.a               {
117                            rc10_lval.registerEnum.word = RCP_SPARE0_ALPHA;
118                            return(regVariable);
119                        }
120spare0\.b               {
121                            rc10_lval.registerEnum.word = RCP_SPARE0_BLUE;
122                            return(regVariable);
123                        }
124spare0          {
125                            rc10_lval.registerEnum.word = RCP_SPARE0;
126                            return(regVariable);
127                        }
128
129spare1\.rgb     {
130                            rc10_lval.registerEnum.word = RCP_SPARE1_RGB;
131                            return(regVariable);
132                        }
133spare1\.a               {
134                            rc10_lval.registerEnum.word = RCP_SPARE1_ALPHA;
135                            return(regVariable);
136                        }
137spare1\.b               {
138                            rc10_lval.registerEnum.word = RCP_SPARE1_BLUE;
139                            return(regVariable);
140                        }
141spare1          {
142                            rc10_lval.registerEnum.word = RCP_SPARE1;
143                            return(regVariable);
144                        }
145
146tex0\.rgb       {
147                            rc10_lval.registerEnum.word = RCP_TEXTURE0_RGB;
148                            return(regVariable);
149                        }
150tex0\.a         {
151                            rc10_lval.registerEnum.word = RCP_TEXTURE0_ALPHA;
152                            return(regVariable);
153                        }
154tex0\.b         {
155                            rc10_lval.registerEnum.word = RCP_TEXTURE0_BLUE;
156                            return(regVariable);
157                        }
158tex0            {
159                            rc10_lval.registerEnum.word = RCP_TEXTURE0;
160                            return(regVariable);
161                        }
162
163tex1\.rgb       {
164                            rc10_lval.registerEnum.word = RCP_TEXTURE1_RGB;
165                            return(regVariable);
166                        }
167tex1\.a         {
168                            rc10_lval.registerEnum.word = RCP_TEXTURE1_ALPHA;
169                            return(regVariable);
170                        }
171tex1\.b         {
172                            rc10_lval.registerEnum.word = RCP_TEXTURE1_BLUE;
173                            return(regVariable);
174                        }
175tex1            {
176                            rc10_lval.registerEnum.word = RCP_TEXTURE1;
177                            return(regVariable);
178                        }
179
180tex2\.rgb       {
181                            rc10_lval.registerEnum.word = RCP_TEXTURE2_RGB;
182                            return(regVariable);
183                        }
184tex2\.a         {
185                            rc10_lval.registerEnum.word = RCP_TEXTURE2_ALPHA;
186                            return(regVariable);
187                        }
188tex2\.b         {
189                            rc10_lval.registerEnum.word = RCP_TEXTURE2_BLUE;
190                            return(regVariable);
191                        }
192tex2            {
193                            rc10_lval.registerEnum.word = RCP_TEXTURE2;
194                            return(regVariable);
195                        }
196
197tex3\.rgb       {
198                            rc10_lval.registerEnum.word = RCP_TEXTURE3_RGB;
199                            return(regVariable);
200                        }
201tex3\.a         {
202                            rc10_lval.registerEnum.word = RCP_TEXTURE3_ALPHA;
203                            return(regVariable);
204                        }
205tex3\.b         {
206                            rc10_lval.registerEnum.word = RCP_TEXTURE3_BLUE;
207                            return(regVariable);
208                        }
209tex3            {
210                            rc10_lval.registerEnum.word = RCP_TEXTURE3;
211                            return(regVariable);
212                        }
213
214const0\.rgb     {
215                            rc10_lval.registerEnum.word = RCP_CONST_COLOR0_RGB;
216                            return(regVariable);
217                        }
218const0\.a               {
219                            rc10_lval.registerEnum.word = RCP_CONST_COLOR0_ALPHA;
220                            return(regVariable);
221                        }
222const0\.b               {
223                            rc10_lval.registerEnum.word = RCP_CONST_COLOR0_BLUE;
224                            return(regVariable);
225                        }
226const0          {
227                            rc10_lval.registerEnum.word = RCP_CONST_COLOR0;
228                            return(constVariable);
229                        }
230
231const1\.rgb     {
232                            rc10_lval.registerEnum.word = RCP_CONST_COLOR1_RGB;
233                            return(regVariable);
234                        }
235const1\.a               {
236                            rc10_lval.registerEnum.word = RCP_CONST_COLOR1_ALPHA;
237                            return(regVariable);
238                        }
239const1\.b               {
240                            rc10_lval.registerEnum.word = RCP_CONST_COLOR1_BLUE;
241                            return(regVariable);
242                        }
243const1          {
244                            rc10_lval.registerEnum.word = RCP_CONST_COLOR1;
245                            return(constVariable);
246                        }
247
248zero\.rgb       {
249                            rc10_lval.registerEnum.word = RCP_ZERO_RGB;
250                            return(regVariable);
251                        }
252zero\.a         {
253                            rc10_lval.registerEnum.word = RCP_ZERO_ALPHA;
254                            return(regVariable);
255                        }
256zero\.b         {
257                            rc10_lval.registerEnum.word = RCP_ZERO_BLUE;
258                            return(regVariable);
259                        }
260zero            {
261                            rc10_lval.registerEnum.word = RCP_ZERO;
262                            return(regVariable);
263                        }
264
265one\.rgb        {
266                            rc10_lval.registerEnum.word = RCP_ONE_RGB;
267                            return(regVariable);
268                        }
269one\.a          {
270                            rc10_lval.registerEnum.word = RCP_ONE_ALPHA;
271                            return(regVariable);
272                        }
273one\.b          {
274                            rc10_lval.registerEnum.word = RCP_ONE_BLUE;
275                            return(regVariable);
276                        }
277one                     {
278                            rc10_lval.registerEnum.word = RCP_ONE;
279                            return(regVariable);
280                        }
281
282discard         {
283                            rc10_lval.registerEnum.word = RCP_DISCARD;
284                            return(regVariable);
285                        }
286
287out\.rgb                return(fragment_rgb);
288out\.a                  return(fragment_alpha);
289
290final_product {
291                            rc10_lval.registerEnum.word = RCP_FINAL_PRODUCT;
292                            return(final_product);
293                        }
294
295color_sum {
296                            rc10_lval.registerEnum.word = RCP_COLOR_SUM;
297                            return(color_sum);
298                        }
299
300expand                  return(expandString);
301half_bias               return(halfBiasString);
302unsigned                return(unsignedString);
303unsigned_invert return(unsignedInvertString);
304mux                             {
305                                        rc10_lval.ival = GL_TRUE;
306                                        return(muxString);
307                                }
308
309sum                             {
310                                        rc10_lval.ival = GL_FALSE;
311                                        return(sumString);
312                                }
313
314rgb                             {
315                                        rc10_lval.ival = RCP_RGB;
316                                        return(rgb_portion);
317                                }
318alpha                   {
319                                        rc10_lval.ival = RCP_ALPHA;
320                                        return(alpha_portion);
321                                }
322
323clamp_color_sum {
324                                rc10_lval.ival = true;
325                                return(clamp_color_sum);
326                        }
327lerp                    return(lerp);
328
329
330bias_by_negative_one_half_scale_by_two {
331                                rc10_lval.biasScaleEnum.word = RCP_BIAS_BY_NEGATIVE_ONE_HALF_SCALE_BY_TWO;
332                                return(bias_by_negative_one_half_scale_by_two);
333                        }
334bias_by_negative_one_half {
335                                rc10_lval.biasScaleEnum.word = RCP_BIAS_BY_NEGATIVE_ONE_HALF;
336                                return(bias_by_negative_one_half);
337                        }
338scale_by_one_half {
339                                rc10_lval.biasScaleEnum.word = RCP_SCALE_BY_ONE_HALF;
340                                return(scale_by_one_half);
341                        }
342scale_by_two {
343                                rc10_lval.biasScaleEnum.word = RCP_SCALE_BY_TWO;
344                                return(scale_by_two);
345                        }
346scale_by_four {
347                                rc10_lval.biasScaleEnum.word = RCP_SCALE_BY_FOUR;
348                                return(scale_by_four);
349                        }
350
351[+-]?[0-9]+\.[0-9]*     {
352                                rc10_lval.fval = (float)atof(yytext);
353                                return(floatValue);
354                        }
355
356[+-]?[0-9]*\.[0-9]+     {
357                                rc10_lval.fval = (float)atof(yytext);
358                                return(floatValue);
359                        }
360
361[+-]?[0-9]+             {
362                                rc10_lval.fval = (float)atof(yytext);
363                                return(floatValue);
364                        }
365
366\{                      return(openBracket);
367\}                      return(closeBracket);
368\(                      return(openParen);
369\)                      return(closeParen);
370;                       return(semicolon);
371,                       return(comma);
372\.                      return(dot);
373\*                      return(times);
374-                       return(minus);
375\+                      return(plus);
376=                       return(equals);
377
378\r*\n           {
379                                line_number++;
380                        }
381
382[ \t]+          {}
383
384{alphanum}+ {
385                                errors.set("unrecognized token", line_number);
386                        }
387                               
388
389%%
390
391bool rc10_init_more();
392
393bool rc10_init(char* inputString)
394{
395    myin = inputString;
396        return rc10_init_more();
397}
398
399#ifndef rc10_wrap
400int rc10_wrap(void)
401{
402  return(1);
403}
404#endif
Note: See TracBrowser for help on using the repository browser.