1 /* _______________________________________________________________________ 2 3 Surfpack: A Software Library of Multidimensional Surface Fitting Methods 4 Copyright (c) 2006, Sandia National Laboratories. 5 This software is distributed under the GNU Lesser General Public License. 6 For more information, see the README file in the top Surfpack directory. 7 _______________________________________________________________________ */ 8 9 /* lexical analyzer for Surfpack */ 10 %{ 11 #include "surfparse.h" 12 extern void appendToken(const char*); 13 %} 14 15 /* This tells flex to read only one input file */ 16 %option noyywrap 17 /* Don't include unistd.h for Windows portability */ 18 %{ 19 #ifdef _WIN32 20 %} 21 %option nounistd 22 %{ 23 #endif 24 %} 25 26 %% 27 CreateAxes | 28 CreateSurface | 29 CreateSample | 30 Evaluate | 31 Fitness | 32 Load | 33 Save { appendToken(yytext); return STANDARD_COMMAND; } 34 [[:alpha:]][[:alnum:]_]* { appendToken(yytext); return IDENTIFIER; } 35 '[^']*' { appendToken(yytext); return STRING; } 36 #.*\n { } 37 !.*\n { appendToken(yytext); return SHELL_COMMAND; } 38 \/\*(.*\n)*.*\*\/ { appendToken(yytext); return SHELL_COMMAND; } 39 [+-]?[0-9]+ { appendToken(yytext); return INTEGER; } 40 [+-]?([0-9])*"."([0-9])*([eEdD][+-]?[0-9]{1,3})? { appendToken(yytext); return REAL; } 41 "(" { appendToken(yytext); return '('; } 42 ")" { appendToken(yytext); return ')'; } 43 "{" { appendToken(yytext); return '{'; } 44 "}" { appendToken(yytext); return '}'; } 45 "," { appendToken(yytext); return ','; } 46 "=" { appendToken(yytext); return '='; } 47 "[" { appendToken(yytext); return '['; } 48 "]" { appendToken(yytext); return ']'; } 49 [ \t\r] { appendToken(yytext); } 50 "\n" 51 . { appendToken(yytext); } 52