X-Git-Url: http://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/5b42e9400440d86723a27747b2191ab8cd59c2ee..486240dc4c5d57b0afaddba60d87fe375112bed5:/src/lexer.l diff --git a/src/lexer.l b/src/lexer.l index 14f6990..a33eed0 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -24,7 +24,7 @@ #include #include -#include "tree.h" +#include "treefuncs.h" #include "parse.h" #include "main.h" #include "util.h" @@ -51,9 +51,9 @@ static void clear_cbuf(void) { if(!cbuf) { - cbuf = g_string_new(""); + cbuf = g_string_new(NULL); } else { - cbuf = g_string_assign(cbuf,""); + cbuf = g_string_assign(cbuf, ""); } } @@ -81,6 +81,10 @@ add_gtk_doc_func(void) gtk_doc_func = NULL; } +/* Ugly warning avoiding */ +#ifdef FLEX_SCANNER +int yylex(void); +#endif %} @@ -93,11 +97,33 @@ add_gtk_doc_func(void) %x GTK_DOC %x GTK_DOC_LINE + + %% <*>\n { line_no++; REJECT; } -<*>MOTHERFUCKER { fprintf(stderr,"You are a bad bad person!\n"); REJECT; } +^(I(S.RI).E\(([1-9][0-9]+|[2-9]))/(\)) { +/* Thy evil easter egg */ +#define QQ(x) long x +#define KK(x) =atoi(__(&,,x,)) +#define MM(x,a) {QQ(i);for(i=2;i^#[ \t]*include[ \t][<"][^\n">]*[>"] { @@ -345,7 +371,7 @@ class { char *s; s = g_strdup_printf("'%s' keyword should not " "be used when generating " - "C++ code",yytext); + "C++ code", yytext); print_error(TRUE, s, line_no); g_free(s); } @@ -373,12 +399,12 @@ class { public {yylval.line = line_no; return PUBLIC;} private {yylval.line = line_no; return PRIVATE;} protected {yylval.line = line_no; return PROTECTED;} +classwide {yylval.line = line_no; return CLASSWIDE;} argument {yylval.line = line_no; return ARGUMENT;} virtual {yylval.line = line_no; return VIRTUAL;} signal {yylval.line = line_no; return SIGNAL;} override {yylval.line = line_no; return OVERRIDE;} -onerror {return ONERROR;} -0|[1-9][0-9]*|0x[0-9a-fA-F]+|0[0-7]+|[0-9]*\.[0-9]+|\.[0-9][0-9]* { +0|[1-9][0-9]*|0x[0-9a-fA-F]+|0[0-7]+|[0-9]*\.[0-9]+|\.[0-9][0-9]* { yylval.id = g_strdup(yytext); return NUMBER; } @@ -397,7 +423,7 @@ class { return TOKEN; } -(\[[0-9]*\])+ { +(\[[0-9]*\]|\[[A-Za-z_][A-Za-z0-9_]*\])+ { yylval.id = g_strdup(yytext); return ARRAY_DIM; } @@ -428,3 +454,16 @@ class { } <*>[\n\r] ; /*ignore*/ + +%% + +/* Ugly warning avoiding */ +#ifdef FLEX_SCANNER +static void warning_avoider(void) G_GNUC_UNUSED; +static void warning_avoider(void) { + yy_flex_realloc(NULL, 0); + yyunput(0, NULL); + warning_avoider(); +} +#endif +