diff options
| author | Lennart Poettering <lennart@poettering.net> | 2005-11-20 22:15:04 +0000 |
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2005-11-20 22:15:04 +0000 |
| commit | 0ff40b23e97276fe829677f9fa0118b0bdb4d6ab (patch) | |
| tree | 9ca9be2d9b727c6fcf80a7feb1f1bb7926265693 /lex-c.l | |
| parent | d011c663380dbf6e0e6a67d0555d67f3ce544e83 (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.l | 87 |
1 files changed, 87 insertions, 0 deletions
@@ -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(); +} |
