[gforth] / gforth / vmgen-ex2 / mini.l  

gforth: gforth/vmgen-ex2/mini.l


1 : anton 1.5 %{
2 : anton 1.1 /* front-end scanner for vmgen example
3 :    
4 : anton 1.4 Copyright (C) 2001,2003 Free Software Foundation, Inc.
5 : anton 1.1
6 :     This file is part of Gforth.
7 :    
8 :     Gforth is free software; you can redistribute it and/or
9 :     modify it under the terms of the GNU General Public License
10 :     as published by the Free Software Foundation; either version 2
11 :     of the License, or (at your option) any later version.
12 :    
13 :     This program is distributed in the hope that it will be useful,
14 :     but WITHOUT ANY WARRANTY; without even the implied warranty of
15 :     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 :     GNU General Public License for more details.
17 :    
18 :     You should have received a copy of the GNU General Public License
19 :     along with this program; if not, write to the Free Software
20 :     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
21 :     */
22 :    
23 :     /* %option yylineno (flex option, implied by flex -l) */
24 :    
25 : anton 1.3 #include <stdlib.h>
26 : anton 1.2 #include <string.h>
27 : anton 1.3 char *mystrdup(const char *s)
28 :     {
29 :     char *t=malloc(strlen(s)+1);
30 :     return strcpy(t,s);
31 :     }
32 : anton 1.2 %}
33 :    
34 : anton 1.1 %%
35 :     [-();,+*&|<=!] return yytext[0];
36 :     := return BECOMES;
37 :     func return FUNC;
38 :     return return RETURN;
39 :     end return END;
40 :     var return VAR;
41 :     if return IF;
42 :     then return THEN;
43 :     else return ELSE;
44 :     while return WHILE;
45 :     do return DO;
46 :     print return PRINT;
47 :     [0-9]+ { yylval.num=strtol(yytext,NULL,10); return NUM; }
48 : anton 1.3 [a-zA-Z\_][a-zA-Z0-9\_]* { yylval.string=mystrdup(yytext); return IDENT; }
49 : anton 1.1 [ \t\n] ;
50 :     [/][/].* ;
51 :     . yyerror("illegal character"); exit(1);
52 :     %%

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help