/usr/share/doc/jflex/examples/interpreter/scanner.flex is in jflex 1.4.3+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 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 71 | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright (C) 2001 Gerwin Klein <lsf@jflex.de> *
* Copyright (C) 2001 Bernhard Rumpe <rumpe@in.tum.de> *
* All rights reserved. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License. See the file *
* COPYRIGHT for more information. *
* *
* 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 along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
import java_cup.runtime.Symbol;
%%
%cup
%implements sym
%{
SymTab symtab; // externe symbol table
public void setSymtab(SymTab symtab) {
this.symtab = symtab;
}
private Symbol sym(int sym) {
return new Symbol(sym);
}
private Symbol sym(int sym, Object val) {
return new Symbol(sym, val);
}
%}
%%
"arguments" { return sym(ARGUMENTS); }
"input" { return sym(INPUT); }
"functions" { return sym(FUNCTIONS); }
"output" { return sym(OUTPUT); }
"end" { return sym(END); }
"if" { return sym(IF); }
"then" { return sym(THEN); }
"else" { return sym(ELSE); }
"fi" { return sym(FI); }
[a-z]+ { symtab.enter(yytext(),new SymtabEntry(yytext()));
return sym(ID,yytext()); }
[0-9]+ { return sym(NUMBER,yytext()); }
"," { return sym(COMMA); }
"(" { return sym(LPAR); }
")" { return sym(RPAR); }
"=" { return sym(EQ); }
"-" { return sym(MINUS); }
"+" { return sym(PLUS); }
"*" { return sym(TIMES); }
"/" { return sym(DIV); }
"<" { return sym(LE); }
"<=" { return sym(LEQ); }
[\ \t\b\f\r\n]+ { /* eat whitespace */ }
"//"[^\n]* { /* one-line comment */ }
. { throw new Error("Unexpected character ["+yytext()+"]"); }
|