blob: b74f1692f99f3f110be8760fa8408cc67d573c0a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
/* --c-mode-- */
%{
#include <stdio.h>
%}
%Start DEF CCOMMENT CPPCOMMENT STRING CHAR PREPROC
IDCHAR [_a-zA-Z0-9]
NIDCHAR [^_a-zA-Z0-9]
%%
BEGIN DEF;
<DEF>^#ifn?def |
<DEF>^#if |
<DEF>^#define |
<DEF>^#undef ;
<DEF>^#. { BEGIN CPPCOMMENT; }
<DEF>"/*" { BEGIN CCOMMENT; }
<CCOMMENT>"*/" { BEGIN DEF; }
<CCOMMENT>\n |
<CCOMMENT>. ;
<DEF>"//" { BEGIN CPPCOMMENT; }
<CPPCOMMENT>\n { BEGIN DEF; }
<CPPCOMMENT>. ;
<DEF>"\"" { BEGIN STRING; }
<STRING>"\"" { BEGIN DEF; }
<STRING>. |
<STRING>\n ;
<DEF>"'" { BEGIN CHAR; }
<CHAR>"'" { BEGIN DEF; }
<CHAR>\n |
<CHAR>. ;
<DEF>auto{NIDCHAR} |
<DEF>break{NIDCHAR} |
<DEF>case{NIDCHAR} |
<DEF>char{NIDCHAR} |
<DEF>const{NIDCHAR} |
<DEF>continue{NIDCHAR} |
<DEF>default{NIDCHAR} |
<DEF>do{NIDCHAR} |
<DEF>double{NIDCHAR} |
<DEF>else{NIDCHAR} |
<DEF>enum{NIDCHAR} |
<DEF>extern{NIDCHAR} |
<DEF>float{NIDCHAR} |
<DEF>for{NIDCHAR} |
<DEF>goto{NIDCHAR} |
<DEF>if{NIDCHAR} |
<DEF>int{NIDCHAR} |
<DEF>long{NIDCHAR} |
<DEF>register{NIDCHAR} |
<DEF>return{NIDCHAR} |
<DEF>short{NIDCHAR} |
<DEF>signed{NIDCHAR} |
<DEF>sizeof{NIDCHAR} |
<DEF>static{NIDCHAR} |
<DEF>struct{NIDCHAR} |
<DEF>switch{NIDCHAR} |
<DEF>typedef{NIDCHAR} |
<DEF>union{NIDCHAR} |
<DEF>unsigned{NIDCHAR} |
<DEF>void{NIDCHAR} |
<DEF>volatile{NIDCHAR} |
<DEF>while{NIDCHAR} { yyless(yyleng-1); }
<DEF>[a-zA-Z_][a-zA-Z_0-9]{3,} { printf("%s\n", yytext); }
<DEF>"\n" |
<DEF>. ;
%%
int main(int argc, char *argv[]) {
yylex();
}
|