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