LTP GCOV extension - code coverage report
Current view: directory - src/libexpr - lexer.l
Test: app.info
Date: 2004-12-21 Instrumented lines: 46
Code covered: 95.7 % Executed lines: 44

       1                 : %option reentrant bison-bridge bison-locations
       2                 : %option noyywrap
       3                 : %option never-interactive
       4                 : 
       5                 : 
       6                 : %{
       7                 : #include <string.h>
       8                 : #include <aterm2.h>
       9                 : #include "parser-tab.h"
      10                 : 
      11                 : static void initLoc(YYLTYPE * loc)
      12              23 : {
      13              23 :     loc->first_line = 1;
      14              23 :     loc->first_column = 1;
      15                 : }
      16                 : 
      17                 : static void adjustLoc(YYLTYPE * loc, const char * s, size_t len)
      18            7664 : {
      19            7664 :     while (len--) {
      20            6037 :        switch (*s++) {
      21                 :        case '\n': 
      22             212 :            ++loc->first_line;
      23             212 :            loc->first_column = 1;
      24             212 :            break;
      25                 :        default:
      26            5825 :            ++loc->first_column;
      27                 :        }
      28                 :     }
      29                 : }
      30                 : 
      31                 : #define YY_USER_INIT initLoc(yylloc)
      32                 : #define YY_USER_ACTION adjustLoc(yylloc, yytext, yyleng);
      33                 : 
      34                 : %}
      35                 : 
      36                 : 
      37                 : ID          [a-zA-Z\_][a-zA-Z0-9\_\']*
      38                 : INT         [0-9]+
      39                 : STR         \"[^\n\"]*\"
      40                 : PATH        [a-zA-Z0-9\.\_\-\+]*(\/[a-zA-Z0-9\.\_\-\+]+)+
      41                 : URI         [a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']+
      42                 : 
      43                 : 
      44                 : %%
      45                 : 
      46                 : 
      47               8 : if          { return IF; }
      48              16 : then        { return THEN; }
      49              16 : else        { return ELSE; }
      50              22 : assert      { return ASSERT; }
      51               8 : with        { return WITH; }
      52              19 : let         { return LET; }
      53               4 : rec         { return REC; }
      54              18 : inherit     { return INHERIT; }
      55               4 : 
      56               8 : \=\=        { return EQ; }
      57              16 : \!\=        { return NEQ; }
      58               8 : \&\&        { return AND; }
      59               9 : \|\|        { return OR; }
      60              18 : \-\>        { return IMPL; }
      61               1 : \/\/        { return UPDATE; }
      62             297 : 
      63             290 : {ID}        { yylval->t = ATmake("<str>", yytext); return ID; /* !!! alloc */ }
      64             308 : {INT}       { int n = atoi(yytext); /* !!! overflow */
      65               9 :               yylval->t = ATmake("<int>", n);
      66              18 :               return INT;
      67                 :             }
      68             196 : {STR}       { int len = strlen(yytext);
      69              98 :               yytext[len - 1] = 0;
      70             196 :               yylval->t = ATmake("<str>", yytext + 1);
      71              98 :               yytext[len - 1] = '\"';
      72              98 :               return STR; /* !!! alloc */
      73                 :             }
      74              38 : {PATH}      { yylval->t = ATmake("<str>", yytext); return PATH; /* !!! alloc */ }
      75              16 : {URI}       { yylval->t = ATmake("<str>", yytext); return URI; /* !!! alloc */ }
      76             699 : 
      77               8 : [ \t\n]+    /* eat up whitespace */
      78             680 : \#[^\n]*    /* single-line comments */
      79             683 : \/\*([^*]|\*[^\/])*\*\/  /* long comments */
      80               5 : 
      81             452 : .           return yytext[0];
      82             454 : 
      83                 : 
      84               0 : %%

Generated by: LTP GCOV extension version 1.1