Blame examples/testxxLexer.l

Packit f00812
	// An example of using the flex C++ scanner class.
Packit f00812
Packit f00812
%option C++ noyywrap
Packit f00812
Packit f00812
%{
Packit f00812
int mylineno = 0;
Packit f00812
%}
Packit f00812
Packit f00812
string	\"[^\n"]+\"
Packit f00812
Packit f00812
ws	[ \t]+
Packit f00812
Packit f00812
alpha	[A-Za-z]
Packit f00812
dig	[0-9]
Packit f00812
name	({alpha}|{dig}|\$)({alpha}|{dig}|\_|\.|\-|\/|\$)*
Packit f00812
num1	[-+]?{dig}+\.?([eE][-+]?{dig}+)?
Packit f00812
num2	[-+]?{dig}*\.{dig}+([eE][-+]?{dig}+)?
Packit f00812
number	{num1}|{num2}
Packit f00812
Packit f00812
%%
Packit f00812
Packit f00812
{ws}	/* skip blanks and tabs */
Packit f00812
Packit f00812
"/*"		{
Packit f00812
		int c;
Packit f00812
Packit f00812
		while((c = yyinput()) != 0)
Packit f00812
			{
Packit f00812
			if(c == '\n')
Packit f00812
				++mylineno;
Packit f00812
Packit f00812
			else if(c == '*')
Packit f00812
				{
Packit f00812
				if((c = yyinput()) == '/')
Packit f00812
					break;
Packit f00812
				else
Packit f00812
					unput(c);
Packit f00812
				}
Packit f00812
			}
Packit f00812
		}
Packit f00812
Packit f00812
{number}	std::cout << "number " << YYText() << '\n';
Packit f00812
Packit f00812
\n		mylineno++;
Packit f00812
Packit f00812
{name}		std::cout << "name " << YYText() << '\n';
Packit f00812
Packit f00812
{string}	std::cout << "string " << YYText() << '\n';
Packit f00812
Packit f00812
%%
Packit f00812
Packit f00812
int main( int /* argc */, char** /* argv */ )
Packit f00812
	{
Packit f00812
	FlexLexer* lexer = new yyFlexLexer;
Packit f00812
	while(lexer->yylex() != 0)
Packit f00812
		;
Packit f00812
	return 0;
Packit f00812
	}