clang warning elimination2
[deliverable/titan.core.git] / core / config_process.l
index a1bdde0e32b4f5775435f1e8f903060de8a1489e..3e111129da3eee89f2c08f5c5eafabf3d200f721 100644 (file)
@@ -1,9 +1,26 @@
 /******************************************************************************
- * Copyright (c) 2000-2014 Ericsson Telecom AB
+ * Copyright (c) 2000-2016 Ericsson Telecom AB
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Baji, Laszlo
+ *   Balasko, Jeno
+ *   Baranyi, Botond
+ *   Beres, Szabolcs
+ *   Delic, Adam
+ *   Forstner, Matyas
+ *   Kovacs, Ferenc
+ *   Pandi, Krisztian
+ *   Raduly, Csaba
+ *   Szabados, Kristof
+ *   Szabo, Bence Janos
+ *   Szabo, Janos Zoltan – initial implementation
+ *   Szalai, Gabor
+ *   Zalanyi, Balazs Andor
+ *
  ******************************************************************************/
 %option noyywrap
 %option never-interactive
@@ -35,6 +52,8 @@
 
 #include "../common/dbgnew.hh"
 
+#include "Profiler.hh"
+
 extern string_map_t *config_defines;
 
 #define yylval config_process_lval
@@ -115,13 +134,15 @@ DNSNAME {HOSTNAME}(\.{HOSTNAME})*\.?
 /* Example: fe80::c002:37ff:fe6c:0%fastethernet0/0 */
 IPV6 [0-9A-Fa-f:.]+(%[0-9A-Za-z]+)?
 
+UID [uU][+]?[0-9A-Fa-f]{1,8}
+
 TTCNSTRINGPARSING "$#&&&(#TTCNSTRINGPARSING$#&&^#% "
 TTCNSTRINGPARSING_COMPONENT "$#&&&(#TTCNSTRINGPARSING_COMPONENT$#&&^#% "
 
 %x SC_commentblock SC_cstring SC_DEFINE
 %s SC_MODULE_PARAMETERS SC_LOGGING SC_TESTPORT_PARAMETERS SC_EXECUTE SC_GROUPS
 %s SC_COMPONENTS SC_EXTERNAL_COMMANDS SC_MAIN_CONTROLLER SC_INCLUDE SC_ORDERED_INCLUDE
-%s SC_STRING2TTCN_COMPONENT
+%s SC_STRING2TTCN_COMPONENT SC_PROFILER SC_CHAR_KEYWORD
 
 %%
 
@@ -185,6 +206,13 @@ TTCNSTRINGPARSING_COMPONENT "$#&&&(#TTCNSTRINGPARSING_COMPONENT$#&&^#% "
        }
 }
 
+<*>"["{WS}PROFILER{WS}"]"              {
+  if (YY_START!=SC_commentblock && YY_START!=SC_cstring) {
+       BEGIN(SC_PROFILER);
+       return ProfilerKeyword;
+       }
+}
+
 <*>"["{WS}TESTPORT_PARAMETERS{WS}"]"   {
   if (YY_START!=SC_commentblock && YY_START!=SC_cstring) {
        BEGIN(SC_TESTPORT_PARAMETERS);
@@ -269,17 +297,44 @@ TTCNSTRINGPARSING_COMPONENT "$#&&&(#TTCNSTRINGPARSING_COMPONENT$#&&^#% "
 
 . /* eat unnecessary chars */
 
+}
+
+<SC_PROFILER>{HEX}+ {
+  /* numeric statistics filter (check this before checking for NUMBERs) */
+  yylval.uint_val = 0;
+  while(0 != *yytext) {
+    yylval.uint_val *= 16;
+    if ('0' <= *yytext && '9' >= *yytext) {
+      yylval.uint_val += *yytext - '0';
+    }
+    else if ('a' <= *yytext && 'f' >= *yytext) {
+      yylval.uint_val += *yytext - 'a' + 10;
+    }
+    else {
+      yylval.uint_val += *yytext - 'A' + 10;
+    }
+    ++yytext;
+  }
+  return ProfilerStatsFlag;
 }
 
        /* Values */
 
 {NUMBER}       {
        yylval.int_val = new int_val_t(yytext);
+  if (YY_START == SC_MODULE_PARAMETERS || YY_START == SC_CHAR_KEYWORD) {
+    // return a different token for module parameters so it doesn't conflict with references
+    return MPNumber;
+  }
        return Number;
        }
 
 {FLOAT}                {
        yylval.float_val = atof(yytext);
+  if (YY_START == SC_MODULE_PARAMETERS || YY_START == SC_CHAR_KEYWORD) {
+    // return a different token for module parameters so it doesn't conflict with references
+    return MPFloat;
+  }
        return Float;
        }
 
@@ -393,6 +448,10 @@ TTCNSTRINGPARSING_COMPONENT "$#&&&(#TTCNSTRINGPARSING_COMPONENT$#&&^#% "
     break;
   default:
     set_ret_val_cstr(cstring);
+    if (caller_state == SC_MODULE_PARAMETERS || caller_state == SC_CHAR_KEYWORD) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
     return Cstring;
   }
 
@@ -446,6 +505,10 @@ TTCNSTRINGPARSING_COMPONENT "$#&&&(#TTCNSTRINGPARSING_COMPONENT$#&&^#% "
   BEGIN(caller_state);
   if (caller_state!=SC_DEFINE) {
     set_ret_val_cstr(cstring);
+    if (caller_state == SC_MODULE_PARAMETERS || caller_state == SC_CHAR_KEYWORD) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
          return Cstring;
   } 
 
@@ -453,13 +516,25 @@ TTCNSTRINGPARSING_COMPONENT "$#&&&(#TTCNSTRINGPARSING_COMPONENT$#&&^#% "
        }
 }
 
+<SC_CHAR_KEYWORD>
+{
+  {UID} {
+    yylval.str_val = mcopystrn(yytext, yyleng);
+    return UIDval;
+  }
+
+  [,] { return *yytext; }
+
+  [)] { BEGIN(SC_MODULE_PARAMETERS); return *yytext; }
+}
+
        /* Section-wide keywords */
 
 <SC_MODULE_PARAMETERS>
 {
 NULL           return NULLKeyword;
 null           return nullKeyword;
-char           return CharKeyword;
+char           { BEGIN(SC_CHAR_KEYWORD); return CharKeyword; }
 objid          return ObjIdKeyword;
 omit           return OmitKeyword;
 none           {
@@ -493,7 +568,7 @@ ifpresent   return IfpresentKeyword;
 infinity    return InfinityKeyword;
 }
 
-<SC_MODULE_PARAMETERS,SC_LOGGING>
+<SC_MODULE_PARAMETERS,SC_LOGGING,SC_PROFILER>
 {
 true           {
        yylval.bool_val = TRUE;
@@ -523,6 +598,8 @@ system              return SystemKeyword;
 
 [Ee]mergency[Ll]ogging[Mm]ask     return EmergencyLoggingMask;
 
+[Ee]mergency[Ll]ogging[Ff]or[Ff]ail[Vv]erdict  return EmergencyLoggingForFailVerdict;
+
 [Ff]ile[Mm]ask                 return FileMask;
 
 [Cc]onsole[Mm]ask              return ConsoleMask;
@@ -584,6 +661,14 @@ DEBUG_TESTPORT     {
        yylval.logseverity_val = TTCN_Logger::DEBUG_TESTPORT;
        return LoggingBit;
        }
+DEBUG_USER     {
+       yylval.logseverity_val = TTCN_Logger::DEBUG_USER;
+       return LoggingBit;
+       }
+DEBUG_FRAMEWORK        {
+       yylval.logseverity_val = TTCN_Logger::DEBUG_FRAMEWORK;
+       return LoggingBit;
+       }
 DEBUG_UNQUALIFIED              {
        yylval.logseverity_val = TTCN_Logger::DEBUG_UNQUALIFIED;
        return LoggingBit;
@@ -957,6 +1042,174 @@ LOG_ALL  {
 [Dd]elete  return Delete;
 }
 
+<SC_PROFILER>
+{
+  [Dd]isable[Pp]rofiler     return DisableProfilerKeyword;
+  [Dd]isable[Cc]overage     return DisableCoverageKeyword;
+  [Dd]ata[Bb]ase[Ff]ile     return DatabaseFileKeyword;
+  [Aa]ggregate[Dd]ata       return AggregateDataKeyword;
+  [Ss]tatistics[Ff]ile      return StatisticsFileKeyword;
+  [Dd]isable[Ss]tatistics   return DisableStatisticsKeyword;
+  [Ss]tatistics[Ff]ilter    return StatisticsFilterKeyword;
+  [Ss]tart[Aa]utomatically  return StartAutomaticallyKeyword;
+  [Nn]et[Ll]ine[Tt]imes     return NetLineTimesKeyword;
+  [Nn]et[Ff]unction[Tt]imes return NetFunctionTimesKeyword;
+  
+  /* statistics filters */
+  [Nn]umber[Oo]f[Ll]ines {
+    yylval.uint_val = Profiler_Tools::STATS_NUMBER_OF_LINES;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Dd]ata[Rr]aw {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_DATA_RAW;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Dd]ata[Rr]aw {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_DATA_RAW;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Aa]vg[Rr]aw {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_AVG_RAW;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Aa]vg[Rr]aw {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_AVG_RAW;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Tt]imes[Ss]orted[Bb]y[Mm]od {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_TIMES_SORTED_BY_MOD;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Tt]imes[Ss]orted[Bb]y[Mm]od {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_TIMES_SORTED_BY_MOD;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Tt]imes[Ss]orted[Tt]otal {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_TIMES_SORTED_TOTAL;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Tt]imes[Ss]orted[Tt]otal {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_TIMES_SORTED_TOTAL;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Cc]ount[Ss]orted[Bb]y[Mm]od {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_COUNT_SORTED_BY_MOD;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Cc]ount[Ss]orted[Bb]y[Mm]od {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_COUNT_SORTED_BY_MOD;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Cc]ount[Ss]orted[Tt]otal {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_COUNT_SORTED_TOTAL;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Cc]ount[Ss]orted[Tt]otal {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_COUNT_SORTED_TOTAL;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Aa]vg[Ss]orted[Bb]y[Mm]od {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_AVG_SORTED_BY_MOD;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Aa]vg[Ss]orted[Bb]y[Mm]od {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_AVG_SORTED_BY_MOD;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Aa]vg[Ss]orted[Tt]otal {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_AVG_SORTED_TOTAL;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Aa]vg[Ss]orted[Tt]otal {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_AVG_SORTED_TOTAL;
+    return ProfilerStatsFlag;
+  }
+  [Tt]op10[Ll]ine[Tt]imes {
+    yylval.uint_val = Profiler_Tools::STATS_TOP10_LINE_TIMES;
+    return ProfilerStatsFlag;
+  }
+  [Tt]op10[Ff]unc[Tt]imes {
+    yylval.uint_val = Profiler_Tools::STATS_TOP10_FUNC_TIMES;
+    return ProfilerStatsFlag;
+  }
+  [Tt]op10[Ll]ine[Cc]ount {
+    yylval.uint_val = Profiler_Tools::STATS_TOP10_LINE_COUNT;
+    return ProfilerStatsFlag;
+  }
+  [Tt]op10[Ff]unc[Cc]ount {
+    yylval.uint_val = Profiler_Tools::STATS_TOP10_FUNC_COUNT;
+    return ProfilerStatsFlag;
+  }
+  [Tt]op10[Ll]ine[Aa]vg {
+    yylval.uint_val = Profiler_Tools::STATS_TOP10_LINE_AVG;
+    return ProfilerStatsFlag;
+  }
+  [Tt]op10[Ff]unc[Aa]vg {
+    yylval.uint_val = Profiler_Tools::STATS_TOP10_FUNC_AVG;
+    return ProfilerStatsFlag;
+  }
+  [Uu]nused[Ll]ines {
+    yylval.uint_val = Profiler_Tools::STATS_UNUSED_LINES;
+    return ProfilerStatsFlag;
+  }
+  [Uu]nused[Ff]unc {
+    yylval.uint_val = Profiler_Tools::STATS_UNUSED_FUNC;
+    return ProfilerStatsFlag;
+  }
+  [Aa]ll[Rr]aw[Dd]ata {
+    yylval.uint_val = Profiler_Tools::STATS_ALL_RAW_DATA;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Dd]ata[Ss]orted[Bb]y[Mm]od {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_DATA_SORTED_BY_MOD;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Dd]ata[Ss]orted[Bb]y[Mm]od {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_DATA_SORTED_BY_MOD;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Dd]ata[Ss]orted[Tt]otal {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_DATA_SORTED_TOTAL;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Dd]ata[Ss]orted[Tt]otal {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_DATA_SORTED_TOTAL;
+    return ProfilerStatsFlag;
+  }
+  [Ll]ine[Dd]ata[Ss]orted {
+    yylval.uint_val = Profiler_Tools::STATS_LINE_DATA_SORTED;
+    return ProfilerStatsFlag;
+  }
+  [Ff]unc[Dd]ata[Ss]orted {
+    yylval.uint_val = Profiler_Tools::STATS_FUNC_DATA_SORTED;
+    return ProfilerStatsFlag;
+  }
+  [Aa]ll[Dd]ata[Ss]orted {
+    yylval.uint_val = Profiler_Tools::STATS_ALL_DATA_SORTED;
+    return ProfilerStatsFlag;
+  }
+  [Tt]op10[Ll]ine[Dd]ata {
+    yylval.uint_val = Profiler_Tools::STATS_TOP10_LINE_DATA;
+    return ProfilerStatsFlag;
+  }
+  [Tt]op10[Ff]unc[Dd]ata {
+    yylval.uint_val = Profiler_Tools::STATS_TOP10_FUNC_DATA;
+    return ProfilerStatsFlag;
+  }
+  [Tt]op10[Aa]ll[Dd]ata {
+    yylval.uint_val = Profiler_Tools::STATS_TOP10_ALL_DATA;
+    return ProfilerStatsFlag;
+  }
+  [Uu]nused[Dd]ata {
+    yylval.uint_val = Profiler_Tools::STATS_UNUSED_DATA;
+    return ProfilerStatsFlag;
+  }
+  [Aa]ll {
+    yylval.uint_val = Profiler_Tools::STATS_ALL;
+    return ProfilerStatsFlag;
+  }
+}
+
 <SC_EXECUTE>control            return ControlKeyword;
 
 <SC_EXTERNAL_COMMANDS>
@@ -985,7 +1238,7 @@ LOG_ALL    {
 
 <SC_MODULE_PARAMETERS>{ASN1LOWERIDENTIFIER}    {
     yylval.str_val = mcopystr(yytext);
-    for (int i = 0; i < yyleng; i++) {
+    for (size_t i = 0; i < yyleng; i++) {
        if (yylval.str_val[i] == '-') yylval.str_val[i] = '_';
     }
     TTCN_warning("In line %d of configuration file: `%s' is not a valid TTCN-3 "
@@ -1006,7 +1259,7 @@ LOG_ALL   {
   char* comp_num_str = mcopystrn(yytext + pos + 1, len - pos - 1);
   yylval.int_val = new int_val_t(comp_num_str);
   Free(comp_num_str);
-  return Number;
+  return MPNumber;
 }
 
 {MACRO_BOOL} {
@@ -1062,6 +1315,10 @@ LOG_ALL  {
       "this context.");
     yylval.int_val = new int_val_t((RInt)0);
   }
+  if (YY_START == SC_MODULE_PARAMETERS || YY_START == SC_CHAR_KEYWORD) {
+    // return a different token for module parameters so it doesn't conflict with references
+    return MPNumber;
+  }
   return Number;
 }
 
@@ -1090,6 +1347,10 @@ LOG_ALL  {
       "this context.");
     yylval.float_val = 0.0;
   }
+  if (YY_START == SC_MODULE_PARAMETERS || YY_START == SC_CHAR_KEYWORD) {
+    // return a different token for module parameters so it doesn't conflict with references
+    return MPFloat;
+  }
   return Float;
 }
 
@@ -1139,6 +1400,10 @@ LOG_ALL  {
         "this context.");
     yylval.charstring_val.n_chars = 0;
     yylval.charstring_val.chars_ptr = memptystr();
+    if (YY_START == SC_MODULE_PARAMETERS || YY_START == SC_CHAR_KEYWORD) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
     return Cstring;
   }
 
@@ -1155,6 +1420,10 @@ LOG_ALL  {
     yylval.charstring_val.n_chars=0;
     yylval.charstring_val.chars_ptr=memptystr();
     Free(macroname);
+    if (YY_START == SC_MODULE_PARAMETERS || YY_START == SC_CHAR_KEYWORD) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
     return Cstring;
   }
 
@@ -1168,6 +1437,10 @@ LOG_ALL  {
     yylval.charstring_val.chars_ptr=(char*)Malloc(macrolen+1);
     memcpy(yylval.charstring_val.chars_ptr, macrovalue, macrolen+1);
     Free(macroname);
+    if (YY_START == SC_MODULE_PARAMETERS || YY_START == SC_CHAR_KEYWORD) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
     return Cstring;
   }
 }
@@ -1363,7 +1636,7 @@ LOG_ALL   {
 
 
 
-.           return yytext[0];
+.       return yytext[0];
 
 
 %%
This page took 0.027631 seconds and 5 git commands to generate.