imap_ncsa.l 2.06 KB
Newer Older
Sven Neumann's avatar
Sven Neumann committed
1 2
%{
/*
3
 * This is a plug-in for GIMP.
Sven Neumann's avatar
Sven Neumann committed
4 5 6 7 8
 *
 * Generates clickable image maps.
 *
 * Copyright (C) 1998-1999 Maurits Rijk  lpeek.mrijk@consunet.nl
 *
9
 * This program is free software: you can redistribute it and/or modify
Sven Neumann's avatar
Sven Neumann committed
10
 * it under the terms of the GNU General Public License as published by
11
 * the Free Software Foundation; either version 3 of the License, or
Sven Neumann's avatar
Sven Neumann committed
12 13 14 15 16 17 18 19
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
20
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
Sven Neumann's avatar
Sven Neumann committed
21 22 23
 *
 */

24 25
#include <string.h>

26 27
#include <glib.h>

Sven Neumann's avatar
Sven Neumann committed
28
#include "imap_ncsa_parse.h"
29 30 31 32 33

#ifdef FLEX_SCANNER
#define YY_NO_UNPUT
#endif /* FLEX_SCANNER */

Sven Neumann's avatar
Sven Neumann committed
34 35 36
%}

%option noyywrap
37 38
%option noinput
%option nounput
Sven Neumann's avatar
Sven Neumann committed
39 40 41 42 43

DIGIT	[0-9]
ID	[a-zA-Z_][a-zA-Z0-9_\-]*
WS	[ \t\n]+

44
%x imap_link
Sven Neumann's avatar
Sven Neumann committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
%x comment

%%

#\$AUTHOR:	       		{
				   BEGIN(comment);
				   return AUTHOR;
				}

#\$TITLE:	       		{
				   BEGIN(comment);
				   return TITLE;
				}

#\$DESCRIPTION:	       		{
				   BEGIN(comment);
				   return DESCRIPTION;
				}

#				{
				   BEGIN(comment);
				   return BEGIN_COMMENT;
				}

<comment>.*	 		{
				   BEGIN(INITIAL);
71
   				   ncsa_lval.id = g_strndup (yytext, yyleng);
Sven Neumann's avatar
Sven Neumann committed
72 73 74 75
   				   return COMMENT;
				}

RECT				{
76
				   BEGIN(imap_link);
Sven Neumann's avatar
Sven Neumann committed
77 78 79 80
   				   return RECTANGLE;
				}

CIRCLE				{
81
				   BEGIN(imap_link);
Sven Neumann's avatar
Sven Neumann committed
82 83 84 85
				   return CIRCLE;
				}

POLY				{
86
				   BEGIN(imap_link);
Sven Neumann's avatar
Sven Neumann committed
87 88 89 90
				   return POLYGON;
				}

DEFAULT				{
91
				   BEGIN(imap_link);
Sven Neumann's avatar
Sven Neumann committed
92 93 94
				   return DEFAULT;
				}

95
<imap_link>[^ ,\t\n]+		{
Sven Neumann's avatar
Sven Neumann committed
96
   				   BEGIN(INITIAL);
97
   				   ncsa_lval.id = g_strndup (yytext, yyleng);
Sven Neumann's avatar
Sven Neumann committed
98 99 100 101
				   return LINK;
				}

-?{DIGIT}*"."?{DIGIT}*([Ee][-+]?{DIGIT}*)? {
102
                                   ncsa_lval.value = g_ascii_strtod (yytext, NULL);
Sven Neumann's avatar
Sven Neumann committed
103 104 105 106 107 108 109 110 111 112
				   return FLOAT;
				}

{WS}				; /* Eat white space */

.				return *yytext;

%%