From 92b92f067b014ac680d60c2b153964c4706c338c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 21 Nov 2005 14:24:32 +0000 Subject: * support escaped characters in strings * deal properly with numbers git-svn-id: file:///home/lennart/svn/public/sse/trunk@8 5fbabb74-0606-0410-a5e4-b5cc6a42724e --- feed/sse-lex-c.l | 10 ++++++++-- feed/test-lex-c.c | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 feed/test-lex-c.c (limited to 'feed') diff --git a/feed/sse-lex-c.l b/feed/sse-lex-c.l index 243c9ab..fab074a 100644 --- a/feed/sse-lex-c.l +++ b/feed/sse-lex-c.l @@ -1,4 +1,4 @@ -/* --*-c-mode-*-- */ +/* --*-c-*-- $Id$ */ %{ @@ -7,7 +7,7 @@ %} -%Start DEF CCOMMENT CPPCOMMENT STRING CHAR PREPROC +%Start DEF CCOMMENT CPPCOMMENT STRING STRINGESC CHAR CHARESC PREPROC IDCHAR [_a-zA-Z0-9] NIDCHAR [^_a-zA-Z0-9] @@ -33,14 +33,18 @@ NIDCHAR [^_a-zA-Z0-9] . ; "\"" { BEGIN STRING; } +"\\" { BEGIN STRINGESC; } "\"" { BEGIN DEF; } . | \n ; +. { BEGIN STRING; } "'" { BEGIN CHAR; } +"\\" { BEGIN CHARESC; } "'" { BEGIN DEF; } \n | . ; +. { BEGIN CHAR; } auto{NIDCHAR} | break{NIDCHAR} | @@ -77,6 +81,8 @@ NIDCHAR [^_a-zA-Z0-9] [a-zA-Z_][a-zA-Z_0-9]{3,} { printf("%s\n", yytext); } +(0x)?[0-9]+ ; + "\n" | . ; diff --git a/feed/test-lex-c.c b/feed/test-lex-c.c new file mode 100644 index 0000000..7bcf7b4 --- /dev/null +++ b/feed/test-lex-c.c @@ -0,0 +1,15 @@ +int main(int argc, char argv[]) { + + /* multiline + * foo */ + + // c comment + + fprintf(stderr, "this is a \"string %s %i", 0x5656, 6786); + + c = 'c'; + c = '\\'; + c = '\000'; + + FOO_BAR(blafasel); +} -- cgit