xref: /netbsd-src/external/bsd/flex/dist/examples/manual/front.lex (revision 3c3a7b7603b4ed4cb76dd5c5a3e781ddca2349bb)
1 %{
2 #include <stdio.h>
3 #include <string.h>
4 #include "y.tab.h"                 /* this comes from bison        */
5 
6 #define TRUE  1
7 #define FALSE 0
8 
9 #define copy_and_return(token_type) { strcpy(yylval.name,yytext); \
10                                       return(token_type); }
11 
12 int             yylexlinenum = 0;  /* so we can count lines        */
13 %}
14 
15 %%
16                             /* Lexical scanning rules begin from here.  */
17 
18 MEN|WOMEN|STOCKS|TREES      copy_and_return(NOUN)
19 MISTAKES|GNUS|EMPLOYEES     copy_and_return(NOUN)
20 LOSERS|USERS|CARS|WINDOWS   copy_and_return(NOUN)
21 
22 DATABASE|NETWORK|FSF|GNU    copy_and_return(PROPER_NOUN)
23 COMPANY|HOUSE|OFFICE|LPF    copy_and_return(PROPER_NOUN)
24 
25 THE|THIS|THAT|THOSE         copy_and_return(DECLARATIVE)
26 
27 ALL|FIRST|LAST              copy_and_return(CONDITIONAL)
28 
29 FIND|SEARCH|SORT|ERASE|KILL copy_and_return(VERB)
30 ADD|REMOVE|DELETE|PRINT     copy_and_return(VERB)
31 
32 QUICKLY|SLOWLY|CAREFULLY    copy_and_return(ADVERB)
33 
34 IN|AT|ON|AROUND|INSIDE|ON   copy_and_return(POSITIONAL)
35 
36 "."                         return(PERIOD);
37 "\n"                        yylexlinenum++; return(NEWLINE);
38 .
39 %%
40 
41