aboutsummaryrefslogtreecommitdiff
path: root/src/c++filt/c++filt.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/c++filt/c++filt.l')
-rw-r--r--src/c++filt/c++filt.l62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/c++filt/c++filt.l b/src/c++filt/c++filt.l
new file mode 100644
index 0000000..af12cac
--- /dev/null
+++ b/src/c++filt/c++filt.l
@@ -0,0 +1,62 @@
1%{
2# include <string>
3
4int nBC = 0;
5%}
6
7%s hasT
8%x inWith
9%x inT
10%option noyywrap nounput batch
11
12%%
13
14"operator<<" { ECHO; }
15"operator>>" { ECHO; }
16"operator". { ECHO; }
17
18"<<" { ECHO; }
19">>" { ECHO; }
20" <<" { ECHO; }
21" >>" { ECHO; }
22
23"<anonymous>" { ECHO; }
24
25\n+ {
26 BEGIN( INITIAL );
27 nBC = false;
28 ECHO;
29}
30
31" <" { ECHO; }
32
33"<" {
34 BEGIN( inT );
35 printf("<...>");
36 nBC++;
37}
38
39<inT>"<" {
40 nBC++;
41
42}
43<inT>[^<>]* { }
44<inT>">" {
45 nBC--;
46 if( nBC == 0 )
47 BEGIN( hasT );
48}
49
50<hasT>" [with"[^\]]*"]" { }
51
52%%
53
54int main()
55{
56 yyin = stdin;
57
58 yylex();
59
60 return 0;
61}
62