]> git.draconx.ca Git - gob-dx.git/blobdiff - src/lexer.l
Release 2.0.7
[gob-dx.git] / src / lexer.l
index 08326211214b03f1e41a212a8f2b28bc13625b26..56f86ada52aa2186740e99b3dc31a97faddd0a85 100644 (file)
 %{
 
 #include "config.h"
-#include <glib.h>
+#include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include <glib.h>
 
 #include "treefuncs.h"
 #include "parse.h"
 #include "util.h"
 
 static int parenth_depth = 0;
-static int before_comment = INITIAL;
+static int before_comment
+/* New flex is on drugs */
+#if defined(FLEX_SCANNER) && ! defined(INITIAL)
+       = 0;
+#else
+       = INITIAL;
+#endif
 static gboolean class_after_c = FALSE;
 static int code_type = CCODE;
 static int before_string;
@@ -230,7 +237,7 @@ REJECT;
                        BEGIN(CLASS_CODE_I);
                        add_gtk_doc_func();
                }
-<GTK_DOC>^[ \t]*\*\    {
+<GTK_DOC>^[ \t]*\*[ \t]        {
                        fflush(stdout);
                        add_to_cbuf(" * ");
                        BEGIN(GTK_DOC_LINE);
@@ -260,6 +267,7 @@ REJECT;
 <C_CODE>\/\/.*$                { add_to_cbuf(yytext); /*comment, ignore*/ }
 <CLASS_CODE>\/\/.*$    { ; /*comment, ignore*/ }
 <CLASS_CODE_I>\/\/.*$  { ; /*comment, ignore*/ }
+<PROPERTY_CODE_I>\/\/.*$       { ; /*comment, ignore*/ }
 \/\*           {BEGIN(COMMENT); before_comment = INITIAL; }
 <C_CODE>\/\*   {
        add_to_cbuf(yytext);
@@ -268,6 +276,7 @@ REJECT;
 }
 <CLASS_CODE>\/\*       {BEGIN(COMMENT); before_comment = CLASS_CODE; }
 <CLASS_CODE_I>\/\*     {BEGIN(COMMENT); before_comment = CLASS_CODE_I; }
+<PROPERTY_CODE_I>\/\*  {BEGIN(COMMENT); before_comment = PROPERTY_CODE_I; }
 <COMMENT>\*\/  {
        if(before_comment == C_CODE) add_to_cbuf(yytext);
        BEGIN(before_comment);
@@ -530,6 +539,15 @@ flags              { return FLAGS; }
                        yylval.id = g_strdup(yytext);
                        return NUMBER;
                }
+<CLASS_CODE,CLASS_CODE_I,PROPERTY_CODE,PROPERTY_CODE_I,INITIAL>[A-Za-z_][A-Za-z0-9_]*(::[A-Za-z0-9_]*)+        {
+                       /* This is cpp kind of token thingie */
+                       if (for_cpp) {
+                               yylval.id = g_strdup(yytext);
+                               return TOKEN;
+                       } else {
+                               REJECT;
+                       }
+               }
 <CLASS_CODE,CLASS_CODE_I,PROPERTY_CODE,PROPERTY_CODE_I,INITIAL>[A-Za-z_][A-Za-z0-9_]*(:[A-Za-z0-9_]*)+ {
                        /* this one is for a classname with a namespace */
                        yylval.id = g_strdup(yytext);
@@ -582,14 +600,3 @@ flags              { return FLAGS; }
 <*>[\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
-