From 0ff40b23e97276fe829677f9fa0118b0bdb4d6ab Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 20 Nov 2005 22:15:04 +0000 Subject: initial version git-svn-id: file:///home/lennart/svn/public/sse/trunk@3 5fbabb74-0606-0410-a5e4-b5cc6a42724e --- lex-c.l | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 lex-c.l (limited to 'lex-c.l') 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 + + +%} + +%Start DEF CCOMMENT CPPCOMMENT STRING CHAR PREPROC + +IDCHAR [_a-zA-Z0-9] +NIDCHAR [^_a-zA-Z0-9] + +%% + + BEGIN DEF; + +^#ifn?def | +^#if | +^#define | +^#undef ; + +^#. { BEGIN CPPCOMMENT; } + +"/*" { BEGIN CCOMMENT; } +"*/" { BEGIN DEF; } +\n | +. ; + +"//" { BEGIN CPPCOMMENT; } +\n { BEGIN DEF; } +. ; + +"\"" { BEGIN STRING; } +"\"" { BEGIN DEF; } +. | +\n ; + +"'" { BEGIN CHAR; } +"'" { BEGIN DEF; } +\n | +. ; + +auto{NIDCHAR} | +break{NIDCHAR} | +case{NIDCHAR} | +char{NIDCHAR} | +const{NIDCHAR} | +continue{NIDCHAR} | +default{NIDCHAR} | +do{NIDCHAR} | +double{NIDCHAR} | +else{NIDCHAR} | +enum{NIDCHAR} | +extern{NIDCHAR} | +float{NIDCHAR} | +for{NIDCHAR} | +goto{NIDCHAR} | +if{NIDCHAR} | +int{NIDCHAR} | +long{NIDCHAR} | +register{NIDCHAR} | +return{NIDCHAR} | +short{NIDCHAR} | +signed{NIDCHAR} | +sizeof{NIDCHAR} | +static{NIDCHAR} | +struct{NIDCHAR} | +switch{NIDCHAR} | +typedef{NIDCHAR} | +union{NIDCHAR} | +unsigned{NIDCHAR} | +void{NIDCHAR} | +volatile{NIDCHAR} | +while{NIDCHAR} { yyless(yyleng-1); } + +[a-zA-Z_][a-zA-Z_0-9]{3,} { printf("%s\n", yytext); } + +"\n" | +. ; + +%% + +int main(int argc, char *argv[]) { + yylex(); +} -- cgit