1 %{
2 #include <math.h>
3 #include "ou.h"
4 
5 int reserverd_word(char *s);
6 extern int yylineno;
7 #define YY_NO_UNPUT
8 %}
9 
10 %option noyywrap
11 
12 DIGIT   [0-9]
13 TEXT    [a-z_\-:/0-9.]*
14 
15 %%
16 
17 border                  return BORDER;
18 atmospheres             return ATMOSPHERES;
19 splash                  return SPLASHBITMAP;
20 filter                  return FILTER;
21 shading                 return SHADING;
22 date                    return SIM_DATE;
23 pause                   return PAUSE;
24 realtime                return REALTIME;
25 demo                    return DEMO;
26 demostep                return DEMOSTEP;
27 planets_labels          return PLANETS_LABELS;
28 stars_labels            return STARS_LABELS;
29 info                    return INFO;
30 star_brightness_factor  return STAR_BRIGHT;
31 star_size               return STAR_SIZE;
32 camera_speed            return CAM_SPEED;
33 camera_mode             return CAM_MODE;
34 target                  return TARGET;
35 source                  return SOURCE;
36 slices                  return SLICES;
37 stacks                  return STACKS;
38 jpeg_quality            return JPEG_QUALITY;
39 mipmap                  return MIPMAP;
40 mipmap_filter           return MIPMAP_FILTER;
41 sun                     return SUN;
42 planet                  return PLANET;
43 satellite               return SATELLITE;
44 orbiter                 return ORBITER;
45 spaceship               return SPACESHIP;
46 asteroid                return ASTEROID;
47 comet                   return COMET;
48 atmosphere              return ATMOSPHERE;
49 ring                    return RING;
50 font                    return FONT;
51 LOD                     return LEVELOFDETAIL;
52 texture_compression     return TEXTURECOMPRESSION;
53 color_depth             return COLORDEPTH;
54 logo                    return LOGO;
55 milky_way               return MILKYWAY;
56 messier                 return MESSIER;
57 
58 {DIGIT}+ { cfglval.ival = atoi(yytext); return INTEGER_NUM; }
59 
60 {DIGIT}+"."{DIGIT}*"E"*{DIGIT}* { cfglval.dval = atof(yytext); return DOUBLE_NUM; }
61 
62 {TEXT} { strcpy(cfglval.name, yytext); return NAME; }
63 
64 
65 "\#"(.)*"\n" yylineno++;
66 "/*" {
67     register int c;
68 
69     for (;;) {
70 	while ((c = yyinput()) != '*' && c != EOF);	/* eat up text of comment */
71 
72 	if (c == '*') {
73 	    while ((c = yyinput()) == '*');
74 	    if (c == '/')
75 		break;		/* found the end */
76 	}
77 
78 	if (c == EOF) {
79 	    error("EOF in comment");
80 	    break;
81 	}
82     }
83 }
84 
85 [\t]+
86 \n      { yylineno++; }
87 "{"     return ('{');
88 "}"     return ('}');
89 "="     return ('=');
90 ";"     return (';');
91 .
92 
93 %%
94