source: XIOS/trunk/src/parse_expr/lex_parser.lex @ 728

Last change on this file since 728 was 728, checked in by rlacroix, 9 years ago

Add new comparisons operators.

Those new operators return 0.0 if the comparison is false, 1.0 if it is true.

  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
File size: 1.2 KB
Line 
1%option noyywrap
2%{
3
4extern "C"
5{
6  int yylex(void);
7}
8#undef  YY_INPUT
9#define YY_INPUT(b, r, s) readInputForLexer(b, &r, s)
10#include <string>
11
12int readInputForLexer(char* buffer, size_t* numBytesRead, size_t maxBytesToRead);
13
14#include "filter_expr_node.hpp"
15#include "yacc_parser.hpp"
16
17%}
18
19white    [ \t]+
20
21digit    [0-9]
22integer  {digit}+
23exponant [eE][+-]?{integer}
24real     {integer}("."{integer})?{exponant}?
25id       [a-zA-Z][a-zA-Z0-9_]*
26average  @{id}
27var      \${id}
28
29%%
30
31{white}   { /* We ignore white characters */ }
32
33{real}    {
34            yylval.str = new std::string(yytext);
35            return NUMBER;
36          }
37
38{average} {
39            yylval.str = new std::string(yytext + 1);
40            return AVERAGE;
41          }
42
43{var}     {
44            yylval.str = new std::string(yytext + 1);
45            return VAR;
46          }
47
48{id}      {
49            yylval.str = new std::string(yytext);
50            return ID;
51          }                   
52                 
53
54"+"  return PLUS;
55"-"  return MINUS;
56
57"*"  return TIMES;
58"/"  return DIVIDE;
59
60"^"  return POWER;
61
62"==" return EQ;
63"<"  return LT;
64">"  return GT;
65"<=" return LE;
66">=" return GE;
67
68"("  return LEFT_PARENTHESIS;
69")"  return RIGHT_PARENTHESIS;
70
71"\0" return END;
Note: See TracBrowser for help on using the repository browser.