-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMicroR.jflex
More file actions
63 lines (59 loc) · 2.53 KB
/
Copy pathMicroR.jflex
File metadata and controls
63 lines (59 loc) · 2.53 KB
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
%%
%{
private void echo () { System . out . print (yytext ()); }
public int position () { return yycolumn; }
%}
%class MicroRLexer
%function nextToken
%type Token
%unicode
%line
%column
%eofval{
{ return new Token (Symbol . EOF); }
%eofval}
Comment = "#".*
WhiteSpace = [ \t\n]
Id = [:letter:] ("_"?([:letter:] | [:digit:]))*
Integer = [:digit:] [:digit:]*
%%
"," { echo (); return new Token (Symbol . COMMA); }
";" { echo (); return new Token (Symbol . SEMICOLON); }
"{" { echo (); return new Token (Symbol . LBRACE); }
"}" { echo (); return new Token (Symbol . RBRACE); }
"<-" { echo (); return new Token (Symbol . ASSIGN); }
"&&" { echo (); return new Token (Symbol . AND); }
"||" { echo (); return new Token (Symbol . OR); }
"!" { echo (); return new Token (Symbol . NOT); }
"<" { echo (); return new Token (Symbol . LT); }
"<=" { echo (); return new Token (Symbol . LE); }
">" { echo (); return new Token (Symbol . GT); }
">=" { echo (); return new Token (Symbol . GE); }
"==" { echo (); return new Token (Symbol . EQ); }
"!=" { echo (); return new Token (Symbol . NE); }
"+" { echo (); return new Token (Symbol . PLUS); }
"-" { echo (); return new Token (Symbol . MINUS); }
"*" { echo (); return new Token (Symbol . TIMES); }
"/" { echo (); return new Token (Symbol . SLASH); }
"(" { echo (); return new Token (Symbol . LPAREN); }
")" { echo (); return new Token (Symbol . RPAREN); }
as"."integer { echo (); return new Token (Symbol . ASINTEGER); }
cons { echo (); return new Token (Symbol . CONS); }
else { echo (); return new Token (Symbol . ELSE); }
function { echo (); return new Token (Symbol . FUNCTION); }
head { echo (); return new Token (Symbol . HEAD); }
if { echo (); return new Token (Symbol . IF); }
main { echo (); return new Token (Symbol . MAIN); }
null { echo (); return new Token (Symbol . NULL); }
print { echo (); return new Token (Symbol . PRINT); }
readline { echo (); return new Token (Symbol . READLINE); }
return { echo (); return new Token (Symbol . RETURN); }
source { echo (); return new Token (Symbol . SOURCE); }
tail { echo (); return new Token (Symbol . TAIL); }
while { echo (); return new Token (Symbol . WHILE); }
\"List"."R\" { echo (); return new Token (Symbol . LISTR); }
{Id} { echo (); return new Token (Symbol . ID, yytext ()); }
{Integer} { echo (); return new Token (Symbol . INTEGER, yytext ()); }
{Comment} { echo (); }
{WhiteSpace} { echo (); }
. { echo (); ErrorMessage . print (yycolumn, "Illegal character"); }