Sync with 5.4.2
[deliverable/titan.core.git] / core / config_process.l
index 4d96260b1aa2990abd05c792e4cf5af9a164cb6b..2b0a5cd8a2545be1bc7a0616bc971c1c880755d3 100644 (file)
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2000-2014 Ericsson Telecom AB
+ * Copyright (c) 2000-2015 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
@@ -35,6 +35,8 @@
 
 #include "../common/dbgnew.hh"
 
+#include "Profiler.hh"
+
 extern string_map_t *config_defines;
 
 #define yylval config_process_lval
@@ -276,17 +278,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) {
+    // 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) {
+    // return a different token for module parameters so it doesn't conflict with references
+    return MPFloat;
+  }
        return Float;
        }
 
@@ -400,6 +429,10 @@ TTCNSTRINGPARSING_COMPONENT "$#&&&(#TTCNSTRINGPARSING_COMPONENT$#&&^#% "
     break;
   default:
     set_ret_val_cstr(cstring);
+    if (caller_state == SC_MODULE_PARAMETERS) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
     return Cstring;
   }
 
@@ -453,6 +486,10 @@ TTCNSTRINGPARSING_COMPONENT "$#&&&(#TTCNSTRINGPARSING_COMPONENT$#&&^#% "
   BEGIN(caller_state);
   if (caller_state!=SC_DEFINE) {
     set_ret_val_cstr(cstring);
+    if (caller_state == SC_MODULE_PARAMETERS) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
          return Cstring;
   } 
 
@@ -591,6 +628,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;
@@ -966,12 +1011,170 @@ LOG_ALL {
 
 <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;
+  [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;
@@ -1002,7 +1205,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 "
@@ -1023,7 +1226,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} {
@@ -1079,6 +1282,10 @@ LOG_ALL  {
       "this context.");
     yylval.int_val = new int_val_t((RInt)0);
   }
+  if (YY_START == SC_MODULE_PARAMETERS) {
+    // return a different token for module parameters so it doesn't conflict with references
+    return MPNumber;
+  }
   return Number;
 }
 
@@ -1107,6 +1314,10 @@ LOG_ALL  {
       "this context.");
     yylval.float_val = 0.0;
   }
+  if (YY_START == SC_MODULE_PARAMETERS) {
+    // return a different token for module parameters so it doesn't conflict with references
+    return MPFloat;
+  }
   return Float;
 }
 
@@ -1156,6 +1367,10 @@ LOG_ALL  {
         "this context.");
     yylval.charstring_val.n_chars = 0;
     yylval.charstring_val.chars_ptr = memptystr();
+    if (YY_START == SC_MODULE_PARAMETERS) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
     return Cstring;
   }
 
@@ -1172,6 +1387,10 @@ LOG_ALL  {
     yylval.charstring_val.n_chars=0;
     yylval.charstring_val.chars_ptr=memptystr();
     Free(macroname);
+    if (YY_START == SC_MODULE_PARAMETERS) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
     return Cstring;
   }
 
@@ -1185,6 +1404,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) {
+      // return a different token for module parameters so it doesn't conflict with references
+      return MPCstring;
+    }
     return Cstring;
   }
 }
This page took 0.029011 seconds and 5 git commands to generate.