Subversion Repositories programming

Rev

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

/*******************************************************************************
 * File: jminus.flex
 *
 * Copyright (c) 2006, Ira W. Snyder (devel@irasnyder.com)
 * License: GNU General Public License v2
 *
 * This file will create a scanner for the J-Minus language using the
 * JFlex tool, available from http://jflex.de.
 ******************************************************************************/

%%

%byaccj

%{
    /* store a reference to the Parser object */
    private Parser yyparser;

    /* constructor taking an additional Parser object */
    public Yylex(java.io.Reader r, Parser yyparser)
    {
        this(r);
        this.yyparser = yyparser;
    }
%}

ID = [a-zA-Z_]([a-zA-Z_] | [0-9])*
ADDOP = "+" | "-"
MULOP = "*" | "/"
NUM = [0-9]+ ("." [0-9]+)?
WSPACE = [\ \t]+ | \n | \r | \r\n

%%

"class"     { return Parser.CLASS;      }
"public"    { return Parser.PUBLIC;     }
"private"   { return Parser.PRIVATE;    }
"int"       { return Parser.INT;        }
"float"     { return Parser.FLOAT;      }
"void"      { return Parser.VOID;       }
"if"        { return Parser.IF;         }
"else"      { return Parser.ELSE;       }
"while"     { return Parser.WHILE;      }
"return"    { return Parser.RETURN;     }

"("         { return Parser.LPAREN;     }
")"         { return Parser.RPAREN;     }
"{"         { return Parser.LBRACE;     }
"}"         { return Parser.RBRACE;     }
";"         { return Parser.SEMI;       }
"="         { return Parser.ASSIGNOP;   }

{ID}        { return Parser.ID;         }
{ADDOP}     { return Parser.ADDOP;      }
{MULOP}     { return Parser.MULOP;      }
{NUM}       { return Parser.NUM;        }
{WSPACE}    {                           }