Subversion Repositories programming

Rev

Rev 227 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
229 ira 1
/*******************************************************************************
2
 * File: jminus.flex
3
 *
4
 * Copyright (c) 2006, Ira W. Snyder (devel@irasnyder.com)
5
 * License: GNU General Public License v2
6
 *
7
 * This file will create a scanner for the J-Minus language using the
8
 * JFlex tool, available from http://jflex.de.
9
 ******************************************************************************/
10
 
225 ira 11
%%
12
 
13
%byaccj
14
 
15
%{
226 ira 16
    /* store a reference to the Parser object */
17
    private Parser yyparser;
225 ira 18
 
226 ira 19
    /* constructor taking an additional Parser object */
229 ira 20
    public Yylex(java.io.Reader r, Parser yyparser)
21
    {
225 ira 22
        this(r);
23
        this.yyparser = yyparser;
24
    }
25
%}
26
 
27
ID = [a-zA-Z_]([a-zA-Z_] | [0-9])*
28
ADDOP = "+" | "-"
29
MULOP = "*" | "/"
30
NUM = [0-9]+ ("." [0-9]+)?
31
WSPACE = [\ \t]+ | \n | \r | \r\n
32
 
33
%%
34
 
226 ira 35
"class"     { return Parser.CLASS;      }
36
"public"    { return Parser.PUBLIC;     }
37
"private"   { return Parser.PRIVATE;    }
38
"int"       { return Parser.INT;        }
39
"float"     { return Parser.FLOAT;      }
40
"void"      { return Parser.VOID;       }
41
"if"        { return Parser.IF;         }
42
"else"      { return Parser.ELSE;       }
43
"while"     { return Parser.WHILE;      }
44
"return"    { return Parser.RETURN;     }
225 ira 45
 
226 ira 46
"("         { return Parser.LPAREN;     }
47
")"         { return Parser.RPAREN;     }
48
"{"         { return Parser.LBRACE;     }
49
"}"         { return Parser.RBRACE;     }
50
";"         { return Parser.SEMI;       }
51
"="         { return Parser.ASSIGNOP;   }
225 ira 52
 
226 ira 53
{ID}        { return Parser.ID;         }
54
{ADDOP}     { return Parser.ADDOP;      }
55
{MULOP}     { return Parser.MULOP;      }
56
{NUM}       { return Parser.NUM;        }
225 ira 57
{WSPACE}    {                           }
58