Home | History | Annotate | Download | only in MISC
      1 	// An example of using the flex C++ scanner class.
      2 
      3 %option C++ noyywrap
      4 
      5 %{
      6 int mylineno = 0;
      7 %}
      8 
      9 string	\"[^\n"]+\"
     10 
     11 ws	[ \t]+
     12 
     13 alpha	[A-Za-z]
     14 dig	[0-9]
     15 name	({alpha}|{dig}|\$)({alpha}|{dig}|\_|\.|\-|\/|\$)*
     16 num1	[-+]?{dig}+\.?([eE][-+]?{dig}+)?
     17 num2	[-+]?{dig}*\.{dig}+([eE][-+]?{dig}+)?
     18 number	{num1}|{num2}
     19 
     20 %%
     21 
     22 {ws}	/* skip blanks and tabs */
     23 
     24 "/*"		{
     25 		int c;
     26 
     27 		while((c = yyinput()) != 0)
     28 			{
     29 			if(c == '\n')
     30 				++mylineno;
     31 
     32 			else if(c == '*')
     33 				{
     34 				if((c = yyinput()) == '/')
     35 					break;
     36 				else
     37 					unput(c);
     38 				}
     39 			}
     40 		}
     41 
     42 {number}	cout << "number " << YYText() << '\n';
     43 
     44 \n		mylineno++;
     45 
     46 {name}		cout << "name " << YYText() << '\n';
     47 
     48 {string}	cout << "string " << YYText() << '\n';
     49 
     50 %%
     51 
     52 int main( int /* argc */, char** /* argv */ )
     53 	{
     54 	FlexLexer* lexer = new yyFlexLexer;
     55 	while(lexer->yylex() != 0)
     56 		;
     57 	return 0;
     58 	}
     59