Ignore:
Timestamp:
07/17/15 13:58:13 (9 years ago)
Author:
rlacroix
Message:

Use the filter infrastructure to handle the expressions

Parse the expressions to get a new tree representation that can be converted to a filter graph based on new arithmetic filters.

Temporal operations are still unsupported.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/parse_expr/lex_parser.lex

    r501 r642  
    77} 
    88#undef  YY_INPUT 
    9 #define YY_INPUT(b,r,s) readInputForLexer(b,&r,s) 
     9#define YY_INPUT(b, r, s) readInputForLexer(b, &r, s) 
    1010#include <string> 
    1111 
    12 int readInputForLexer( char *buffer, int *numBytesRead, int maxBytesToRead ) ; 
     12int readInputForLexer(char* buffer, size_t* numBytesRead, size_t maxBytesToRead); 
    1313 
    14  
    15 #include "simple_node_expr.hpp" 
     14#include "filter_expr_node.hpp" 
    1615#include "yacc_parser.hpp" 
    1716 
    1817%} 
    1918 
    20 white  [ \t]+ 
     19white    [ \t]+ 
    2120 
    22 digit  [0-9] 
     21digit    [0-9] 
    2322integer  {digit}+ 
    2423exponant [eE][+-]?{integer} 
    25 real  {integer}("."{integer})?{exponant}? 
    26 id              [a-zA-Z][a-zA-Z0-9_]* 
    27 average         @{id} 
    28 var             \${id} 
     24real     {integer}("."{integer})?{exponant}? 
     25id       [a-zA-Z][a-zA-Z0-9_]* 
     26average  @{id} 
     27var      \${id} 
     28 
    2929%% 
    3030 
    31 {white}  { /* We ignore white characters */ } 
     31{white}   { /* We ignore white characters */ } 
    3232 
    33 {real}  { 
    34           yylval.str=new std::string(yytext); 
    35           return NUMBER ; 
    36         } 
     33{real}    { 
     34            yylval.str = new std::string(yytext); 
     35            return NUMBER; 
     36          } 
    3737 
    38 {average}       { 
    39                   yylval.str=new std::string(yytext+1) ; 
    40                   return AVERAGE ; 
    41                 } 
     38{average} { 
     39            yylval.str = new std::string(yytext + 1); 
     40            return AVERAGE; 
     41          } 
    4242 
    43 {var}           { 
    44                   yylval.str=new std::string(yytext+1) ; 
    45                   return VAR ; 
    46                 } 
     43{var}     { 
     44            yylval.str = new std::string(yytext + 1); 
     45            return VAR; 
     46          } 
    4747 
    48 {id}            { 
    49                    yylval.str=new std::string(yytext) ; 
    50                    return ID ; 
    51                 }                    
     48{id}      { 
     49            yylval.str = new std::string(yytext); 
     50            return ID; 
     51          }                    
    5252                  
    5353 
    54 "+"  return(PLUS); 
    55 "-"  return(MINUS); 
     54"+"  return PLUS; 
     55"-"  return MINUS; 
    5656 
    57 "*"  return(TIMES); 
    58 "/"  return(DIVIDE); 
     57"*"  return TIMES; 
     58"/"  return DIVIDE; 
    5959 
    60 "^"  return(POWER); 
     60"^"  return POWER; 
    6161 
    62 "("  return(LEFT_PARENTHESIS); 
    63 ")"  return(RIGHT_PARENTHESIS); 
     62"("  return LEFT_PARENTHESIS; 
     63")"  return RIGHT_PARENTHESIS; 
    6464 
    65 "\0"  { 
    66        return(END); 
    67       } 
     65"\0" return END; 
Note: See TracChangeset for help on using the changeset viewer.