summaryrefslogtreecommitdiffstats
path: root/lex-c.l
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2005-11-20 22:15:04 +0000
committerLennart Poettering <lennart@poettering.net>2005-11-20 22:15:04 +0000
commit0ff40b23e97276fe829677f9fa0118b0bdb4d6ab (patch)
tree9ca9be2d9b727c6fcf80a7feb1f1bb7926265693 /lex-c.l
parentd011c663380dbf6e0e6a67d0555d67f3ce544e83 (diff)
initial version
git-svn-id: file:///home/lennart/svn/public/sse/trunk@3 5fbabb74-0606-0410-a5e4-b5cc6a42724e
Diffstat (limited to 'lex-c.l')
-rw-r--r--lex-c.l87
1 files changed, 87 insertions, 0 deletions
diff --git a/lex-c.l b/lex-c.l
new file mode 100644
index 0000000..b74f169
--- /dev/null
+++ b/lex-c.l
@@ -0,0 +1,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();
+}