dwww Home | Show directory contents | Find package

        // An example of using the flex C++ scanner class.

%option C++ noyywrap

%{
int mylineno = 0;
%}

string  \"[^\n"]+\"

ws      [ \t]+

alpha   [A-Za-z]
dig     [0-9]
name    ({alpha}|{dig}|\$)({alpha}|{dig}|\_|\.|\-|\/|\$)*
num1    [-+]?{dig}+\.?([eE][-+]?{dig}+)?
num2    [-+]?{dig}*\.{dig}+([eE][-+]?{dig}+)?
number  {num1}|{num2}

%%

{ws}    /* skip blanks and tabs */

"/*"            {
                int c;

                while((c = yyinput()) != 0)
                        {
                        if(c == '\n')
                                ++mylineno;

                        else if(c == '*')
                                {
                                if((c = yyinput()) == '/')
                                        break;
                                else
                                        unput(c);
                                }
                        }
                }

{number}        std::cout << "number " << YYText() << '\n';

\n              mylineno++;

{name}          std::cout << "name " << YYText() << '\n';

{string}        std::cout << "string " << YYText() << '\n';

%%

int main( int /* argc */, char** /* argv */ )
        {
        FlexLexer* lexer = new yyFlexLexer;
        while(lexer->yylex() != 0)
                ;
        return 0;
        }

Generated by dwww version 1.15 on Thu May 23 17:23:00 CEST 2024.