X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/a8ea1a669f332b0ed29c6271896476f59f357533..6bec711e14babb0d6388754f41834036f22a3ef1:/src/lexer.l?ds=sidebyside diff --git a/src/lexer.l b/src/lexer.l index 971b121..bad0c9a 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -1,5 +1,7 @@ /* GOB C Preprocessor - * Copyright (C) 1999 the Free Software Foundation. + * Copyright (C) 1999-2000 the Free Software Foundation. + * Copyright (C) 2000 Eazel, Inc. + * Copyright (C) 2001-2011 George (Jiri) Lebl * * Author: George Lebl * @@ -187,7 +189,7 @@ REJECT; g_free(str); } -^#[ \t]*include[ \t][<"][^\n">]*[>"] { +^#[ \t]*include[ \t][<"][^\n\r">]*[>"] { if(look_for_includes==1) { char *p; char *file; @@ -197,9 +199,11 @@ REJECT; file++; p = strchr(file,'"'); if(!p) p = strchr(file,'>'); - *p = '\0'; - include_files = g_list_prepend(include_files,g_strdup(file)); - g_free(str); + if (p != NULL) { + *p = '\0'; + include_files = g_list_prepend(include_files,g_strdup(file)); + g_free(str); + } } REJECT; } @@ -342,6 +346,24 @@ REJECT; if(look_for_includes==0) look_for_includes=1; } +^\%(ct|ctop)\{ { + BEGIN(C_CODE); + parenth_depth = 1; + class_after_c = FALSE; + code_type = CTCODE; + clear_cbuf(); + ccode_line = line_no; + if(look_for_includes==0) + look_for_includes=1; + } +^\%(ad|afterdecls)\{ { + BEGIN(C_CODE); + parenth_depth = 1; + class_after_c = FALSE; + code_type = ADCODE; + clear_cbuf(); + ccode_line = line_no; + } ^\%\} { BEGIN(INITIAL); yylval.cbuf = cbuf; @@ -613,13 +635,14 @@ flags { return FLAGS; } [\f\t ] ; /*ignore*/ +<*>[\n\r] ; /*ignore*/ + + <*>. { yylval.line = line_no; return yytext[0]; } -<*>[\n\r] ; /*ignore*/ - ^[ \t]*prealloc[ \t]+[0-9]+[ \t]*$ { char *p; int t;