]> git.draconx.ca Git - gob-dx.git/blobdiff - src/lexer.l
Release 0.90.1
[gob-dx.git] / src / lexer.l
index ebfc1871ea9af15b784fb4f86a9de9fc451431c4..cabafca6a919875378b1baa4f7ffc76fabdf643d 100644 (file)
@@ -31,6 +31,7 @@ static int class_after_c = FALSE;
 static int header_c = FALSE;
 
 static GString *cbuf = NULL;
+int ccode_line = 1;
 
 int line_no = 1;
 
@@ -66,6 +67,8 @@ add_to_cbuf(char *s)
 
 <*>\n                  { line_no++; REJECT; }
 
+<*>MOTHERFUCKER                { fprintf(stderr,"You are a bad bad person!\n"); REJECT; }
+
 \/\/.*$                        { ; /*comment, ignore*/ }
 <C_CODE>\/\/.*$                { ; /*comment, ignore*/ }
 <CLASS_CODE>\/\/.*$    { ; /*comment, ignore*/ }
@@ -76,6 +79,7 @@ add_to_cbuf(char *s)
 <CLASS_CODE_I>\/\*     {BEGIN(COMMENT); before_comment = CLASS_CODE_I; }
 <COMMENT>\*\/  {BEGIN(before_comment);}
 <COMMENT>.     { ; /* comment, ignore */ }
+<COMMENT>\n    { ; /* comment, ignore */ }
 
 ^\%h\{         {
                        BEGIN(C_CODE);
@@ -83,6 +87,7 @@ add_to_cbuf(char *s)
                        class_after_c = FALSE;
                        header_c = TRUE;
                        clear_cbuf();
+                       ccode_line = line_no;
                }
 ^\%\{          {
                        BEGIN(C_CODE);
@@ -90,6 +95,7 @@ add_to_cbuf(char *s)
                        class_after_c = FALSE;
                        header_c = FALSE;
                        clear_cbuf();
+                       ccode_line = line_no;
                }
 <C_CODE>^\%\}  {
                        BEGIN(INITIAL);
@@ -161,18 +167,16 @@ class             {
 <CLASS_CODE_I>float    {return FLOAT;}
 <CLASS_CODE_I>double   {return DOUBLE;}
 <CLASS_CODE_I>char     {return CHAR;}
+<CLASS_CODE_I>const    {return CONST;}
+
+<CLASS_CODE_I>\.\.\.   {return THREEDOTS;}
 
 <CLASS_CODE_I>public   {yylval.line = line_no; return PUBLIC;}
 <CLASS_CODE_I>private  {yylval.line = line_no; return PRIVATE;}
 <CLASS_CODE_I>argument {yylval.line = line_no; return ARGUMENT;}
 <CLASS_CODE_I>virtual  {yylval.line = line_no; return VIRTUAL;}
 <CLASS_CODE_I>signal   {yylval.line = line_no; return SIGNAL;}
-<CLASS_CODE_I>last     {return LAST;}
-<CLASS_CODE_I>first    {return FIRST;}
 <CLASS_CODE_I>override {yylval.line = line_no; return OVERRIDE;}
-<CLASS_CODE_I>check    {return CHECK;}
-<CLASS_CODE_I>null     {return CNULL;}
-<CLASS_CODE_I>type     {return TYPE;}
 <CLASS_CODE_I>onerror  {return ONERROR;}
 <CLASS_CODE_I>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);
@@ -195,6 +199,8 @@ class               {
                        BEGIN(C_CODE);
                        parenth_depth=1;
                        class_after_c = TRUE;
+                       ccode_line = line_no;
+                       yylval.line = line_no;
                        return '{';
                }
 <CLASS_CODE_I>\}       {