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

gforth: gforth/vmgen-ex/mini.l


1 : anton 1.5 %{
2 : anton 1.1 /* front-end scanner for vmgen example
3 :    
4 : anton 1.7 Copyright (C) 2001,2003,2007 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 : anton 1.6 as published by the Free Software Foundation, either version 3
11 : anton 1.1 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 : anton 1.6 along with this program; if not, see http://www.gnu.org/licenses/.
20 : anton 1.1 */
21 :    
22 : anton 1.5 /* % option yylineno (flex option, implied by flex -l) */
23 : anton 1.1
24 : anton 1.3 #include <stdlib.h>
25 : anton 1.2 #include <string.h>
26 : anton 1.3 char *mystrdup(const char *s)
27 :     {
28 :     char *t=malloc(strlen(s)+1);
29 :     return strcpy(t,s);
30 :     }
31 : anton 1.2 %}
32 :    
33 : anton 1.1 %%
34 :     [-();,+*&|<=!] return yytext[0];
35 :     := return BECOMES;
36 :     func return FUNC;
37 :     return return RETURN;
38 :     end return END;
39 :     var return VAR;
40 :     if return IF;
41 :     then return THEN;
42 :     else return ELSE;
43 :     while return WHILE;
44 :     do return DO;
45 :     print return PRINT;
46 :     [0-9]+ { yylval.num=strtol(yytext,NULL,10); return NUM; }
47 : anton 1.3 [a-zA-Z\_][a-zA-Z0-9\_]* { yylval.string=mystrdup(yytext); return IDENT; }
48 : anton 1.1 [ \t\n] ;
49 :     [/][/].* ;
50 :     . yyerror("illegal character"); exit(1);
51 :     %%

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help