LCOV - code coverage report
Current view: top level - builds/barbot/Cosmos/src/ModelGenerator/LhaParser - Lha-scanner.ll (source / functions) Hit Total Coverage
Test: coverage.info Lines: 60 82 73.2 %
Date: 2021-06-16 15:43:28 Functions: 4 4 100.0 %

          Line data    Source code
       1             : %{                                            /* -*- C++ -*- */
       2             : # include <cstdlib>
       3             : # include <errno.h>
       4             : # include <limits.h>
       5             : # include <string>
       6             : # include "Lha-Reader.hpp"
       7             : 
       8             : # undef yywrap
       9             : # define yywrap() 1
      10             : 
      11             : # define YY_DECL LHA_DECL
      12             : 
      13             : /* By default lhalex returns int, we use token_type.
      14             :    Unfortunately lhaterminate by default returns 0, which is
      15             :    not of token_type.  */
      16             : #define yyterminate() return token::END
      17             : #ifndef __clang_analyzer__
      18             : 
      19             : %}
      20             : 
      21             : %option noyywrap nounput batch debug
      22             : 
      23             : STR [a-zA-Z][a-zA-Z_$.0-9]*
      24             : GENERALSTR [a-zA-Z][a-zA-Z_$\[,\]0-9]*
      25             : INT [0-9]+|[0-9]*
      26             : REAL ([0-9]+|[0-9]*\.[0-9]+)([eE][-+]?[0-9]+)? 
      27             : blank [ \t]
      28             : 
      29             : 
      30             : %{
      31             : # define LHA_USER_ACTION  lhalloc->columns (lhaleng);
      32             : %}
      33             : %%
      34             : %{
      35        9850 :   lhalloc->step ();
      36             : %}
      37        2511 : {blank}+   lhalloc->step ();
      38        3273 : [\n]+      lhalloc->lines (lhaleng); lhalloc->step ();
      39         762 : [\%][^\n]*[\n] 
      40           9 : 
      41             : %{
      42             :   typedef lha::Lha_parser::token token;
      43             : %}
      44             :            /* Convert ints to the actual type of tokens.  */
      45         724 : [{}]     return lha::Lha_parser::token_type (lhatext[0]);
      46             : 
      47         702 : ";" {lhalval->name = new std::string (lhatext); return token::SEMICOLON;
      48             :             Reader.error (*lhalloc, "; expected");} 
      49             : 
      50        1330 : "," {lhalval->name = new std::string (lhatext); return token::COMMA;
      51             :             Reader.error (*lhalloc, ", expected");}
      52             : 
      53         133 : "#" {lhalval->name = new std::string (lhatext); return token::SHARP;
      54             :             Reader.error (*lhalloc, "# expected");}
      55             : 
      56         143 : ":" {lhalval->name = new std::string (lhatext); return token::COLON;
      57             :             Reader.error (*lhalloc, ": expected");}
      58             : 
      59           0 : "\\" {lhalval->name = new std::string (lhatext); return token::BackSlash;
      60             :             Reader.error (*lhalloc, ": expected");}
      61             : 
      62         948 : "(" {lhalval->name = new std::string (lhatext); return token::LB;
      63             :             Reader.error (*lhalloc, "( expected");}
      64         948 : ")" {lhalval->name = new std::string (lhatext); return token::RB;
      65             :             Reader.error (*lhalloc, ") expected");}
      66           0 : "[" {lhalval->name = new std::string (lhatext); return token::LSB;
      67             :             Reader.error (*lhalloc, "[ expected");}
      68           0 : "]" {lhalval->name = new std::string (lhatext); return token::RSB;
      69             :             Reader.error (*lhalloc, "] expected");}
      70          28 : "&" {lhalval->name = new std::string (lhatext); return token::AND;
      71             :             Reader.error (*lhalloc, "& expected");}
      72           6 : "|" {lhalval->name = new std::string (lhatext); return token::OR;
      73             :             Reader.error (*lhalloc, "& expected");}
      74           9 : "!" {lhalval->name = new std::string (lhatext); return token::NOT;
      75             :             Reader.error (*lhalloc, "& expected");}
      76             : 
      77         103 : "<=" {lhalval->name = new std::string (lhatext); return token::LEQ;
      78             :             Reader.error (*lhalloc, "<= expected");}
      79           1 : ">=" {lhalval->name = new std::string (lhatext); return token::GEQ;
      80             :             Reader.error (*lhalloc, ">= expected");}
      81             : 
      82         719 : "=" {lhalval->name = new std::string (lhatext); return token::EQ;
      83             :             Reader.error (*lhalloc, "= expected");}
      84           8 : "<" {lhalval->name = new std::string (lhatext); return token::LL;
      85             :             Reader.error (*lhalloc, "< expected");}
      86          19 : ">" {lhalval->name = new std::string (lhatext); return token::GG;
      87             :             Reader.error (*lhalloc, "> expected");}
      88             : 
      89             : 
      90           2 : "/" {lhalval->name = new std::string (lhatext); return token::DIV;
      91             :             Reader.error (*lhalloc, "/ expected");}
      92         102 : "*" {lhalval->name = new std::string (lhatext); return token::MUL;
      93             :             Reader.error (*lhalloc, "* expected");}
      94         205 : "+" {lhalval->name = new std::string (lhatext); return token::PLUS;
      95             :             Reader.error (*lhalloc, "+ expected");}
      96           0 : "-" {lhalval->name = new std::string (lhatext); return token::MINUS;
      97             :             Reader.error (*lhalloc, "- expected");}
      98           0 : "^" {lhalval->name = new std::string (lhatext); return token::POWER;
      99             :             Reader.error (*lhalloc, "^ expected");}
     100             : 
     101           0 : "LhaName" {lhalval->name = new std::string (lhatext); return token::LhaName;
     102             :             Reader.error (*lhalloc, "LhaName expected");}
     103             : 
     104             : 
     105             : 
     106          50 : "const" {lhalval->name = new std::string (lhatext); return token::Const;
     107             :             Reader.error (*lhalloc, "const expected");}
     108             : 
     109           0 : "hybrid" {lhalval->name = new std::string (lhatext); return token::Hybrid;
     110             :                         Reader.error (*lhalloc, "hybrid expected");}
     111             : 
     112          11 : "NbLocations" {lhalval->name = new std::string (lhatext); return token::NbLoc;
     113             :             Reader.error (*lhalloc, "NbLocations expected");}
     114             : 
     115          11 : "NbVariables" {lhalval->name = new std::string (lhatext); return token::NbVar;
     116             :             Reader.error (*lhalloc, "NbVariables expected");}
     117             : 
     118          27 : "VariablesList" {lhalval->name = new std::string (lhatext); return token::VList;
     119             :             Reader.error (*lhalloc, "VariablesList expected");}
     120             : 
     121          27 : "LocationsList" {lhalval->name = new std::string (lhatext); return token::LList;
     122             :             Reader.error (*lhalloc, "LocationsList expected");}
     123             : 
     124          27 : "InitialLocations" {lhalval->name = new std::string (lhatext); return token::Iloc;
     125             :             Reader.error (*lhalloc, "InitialLocations expected");}
     126             : 
     127          27 : "FinalLocations" {lhalval->name = new std::string (lhatext); return token::Floc;
     128             :             Reader.error (*lhalloc, "FinalLocations expected");}
     129             : 
     130          27 : "Locations" {lhalval->name = new std::string (lhatext); return token::locations;
     131             :             Reader.error (*lhalloc, "Locations expected");}
     132             : 
     133          27 : "Edges" {lhalval->name = new std::string (lhatext); return token::edges;
     134             :             Reader.error (*lhalloc, "Edges expected");}
     135             : 
     136             : 
     137             : 
     138           9 : "int" {lhalval->name = new std::string (lhatext); return token::INT;
     139             :             Reader.error (*lhalloc, "int expected");}
     140             : 
     141          41 : "double" {lhalval->name = new std::string (lhatext); return token::DOUBLE;
     142             :             Reader.error (*lhalloc, "double expected");}
     143             : 
     144           0 : "floor" {lhalval->name = new std::string (lhatext); return token::FLOOR;
     145             :             Reader.error (*lhalloc, "floor expected");}
     146             : 
     147             : 
     148           0 : "min" {lhalval->name = new std::string (lhatext); return token::MIN;
     149             :             Reader.error (*lhalloc, "min expected");}
     150             : 
     151           0 : "max" {lhalval->name = new std::string (lhatext); return token::MAX;
     152             :             Reader.error (*lhalloc, "max expected");}
     153             : 
     154           0 : "mod" {lhalval->name = new std::string (lhatext); return token::MOD;
     155             : Reader.error (*lhalloc, "mod expected");}
     156             : 
     157          44 : "TRUE" {lhalval->name = new std::string (lhatext); return token::TRUE;
     158             :             Reader.error (*lhalloc, "TRUE expected");}
     159             : 
     160           0 : "FALSE" {lhalval->name = new std::string (lhatext); return token::FALSE;
     161             :             Reader.error (*lhalloc, "FALSE expected");}
     162             : 
     163          57 : "ALL" {lhalval->name = new std::string (lhatext); return token::ALL;
     164             :             Reader.error (*lhalloc, "ALL expected");}
     165             : 
     166         196 : "Last" {lhalval->name = new std::string (lhatext); return token::LAST;
     167             :             Reader.error (*lhalloc, "Last expected");}
     168             : 
     169           0 : "Min" {lhalval->name = new std::string (lhatext); return token::LhaMIN;
     170             :             Reader.error (*lhalloc, "Min expected");}
     171             : 
     172           1 : "Max" {lhalval->name = new std::string (lhatext); return token::LhaMAX;
     173             :             Reader.error (*lhalloc, "Max expected");}
     174             : 
     175         197 : "AVG" {lhalval->name = new std::string (lhatext); return token::AVG;
     176             :             Reader.error (*lhalloc, "AVG expected");}
     177             : 
     178           0 : "VAR" {lhalval->name = new std::string (lhatext); return token::VAR;
     179             :         Reader.error (*lhalloc, "VAR expected");}
     180             : 
     181           9 : "PROB" {lhalval->name = new std::string (lhatext); return token::PROB;
     182             :         Reader.error (*lhalloc, "PROB expected");}
     183             : 
     184           0 : "EXISTS" {lhalval->name = new std::string (lhatext); return token::EXIST_TOK;
     185             : Reader.error (*lhalloc, "EXISTS expected");}
     186             : 
     187           0 : "NOTALLS" {lhalval->name = new std::string (lhatext); return token::NOTALL_TOK;
     188             : Reader.error (*lhalloc, "NOTALLS expected");}
     189             : 
     190           0 : "HYPOTHESIS" {lhalval->name = new std::string (lhatext); return token::SPRT;
     191             :         Reader.error (*lhalloc, "HYPOTHESIS expected");}
     192             : 
     193           0 : "Integral" {lhalval->name = new std::string (lhatext); return token::INTEGRAL;
     194             :             Reader.error (*lhalloc, "Integral expected");}
     195             : 
     196           0 : "Mean" {lhalval->name = new std::string (lhatext); return token::MEAN;
     197             :         Reader.error (*lhalloc, "Mean expected");}
     198             : 
     199           0 : "PDF" {lhalval->name = new std::string (lhatext); return token::PDF;
     200             :             Reader.error (*lhalloc, "PDF expected");}
     201             : 
     202           0 : "CDF" {lhalval->name = new std::string (lhatext); return token::CDF;
     203             :         Reader.error (*lhalloc, "CDF expected");}
     204             :         
     205          16 : "DISC" {lhalval->name = new std::string (lhatext); return token::DISC;
     206             :         Reader.error (*lhalloc, "DISC expected");}
     207             : 
     208           0 : "NOTDETERMINISTIC" {lhalval->name = new std::string (lhatext); return token::NOTDET;
     209             : Reader.error (*lhalloc, "NOTDETERMINISTIC expected");}
     210             : 
     211             : 
     212             : {INT}      {
     213         282 :   errno = 0; 
     214         282 :   int x=atoi(lhatext);
     215         282 :   lhalval->IntVal = x;
     216         282 :   return token::ival;
     217             : }
     218             :  
     219             : {REAL}      {
     220          13 :   errno = 0; 
     221          13 :   double x=atof(lhatext);
     222          13 :   lhalval->RealVal = x;
     223          13 :   return token::rval;
     224             : }
     225             : 
     226             : 
     227        2592 : {STR}       {lhalval->name = new std::string (lhatext); return token::str;
     228             :             Reader.error (*lhalloc, "invalid character");}
     229             : 
     230          10 : %%
     231          10 : 
     232             : 
     233             : 
     234             : 
     235             : void
     236             : Lha_Reader::scan_end ()
     237          29 : {  
     238             :   lhalex_destroy();
     239          29 : }
     240          29 : 
     241             : 
     242             : void Lha_Reader::scan_expression (const string& f){
     243          29 :   const char* ch=f.c_str();
     244          29 : lhaset_debug(trace_scanning);
     245          29 : 
     246             : // lha_BUFFER_STATE b=lha_scan_string(ch);
     247             : // lha_switch_to_buffer(b);
     248             :  lha_scan_string(ch);
     249          29 :  
     250             : }
     251         134 : #endif // not __clang_analyzer__

Generated by: LCOV version 1.13