-
Notifications
You must be signed in to change notification settings - Fork 0
/
LexicalAnalyzer.flex
70 lines (62 loc) · 1.82 KB
/
LexicalAnalyzer.flex
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
import java.io.*;
%%
%byaccj
%{
// Armazena uma referencia para o parser
private Parser yyparser;
// Construtor recebendo o parser como parametro adicional
public Yylex(Reader r, Parser yyparser){
this(r);
this.yyparser = yyparser;
}
%}
NL = \n | \r | \r\n
%%
"classe" { return Parser.CLASS; }
"subclasse" { return Parser.SUBCLASS;}
"funcao_principal" { return Parser.MAIN;}
\/\/.*$ { yyparser.yylval = new ParserVal(yytext());
return Parser.COMMENT_LINE;}
"{" {return Parser.OPEN_KEYS;}
"}" {return Parser.CLOSE_KEYS;}
"inteiro" {return Parser.INTEGER;}
"String" {return Parser.STRING;}
"," { return Parser.COMMA;}
"vetor" {return Parser.ARRAY;}
"[" { return Parser.OPEN_BRACKET;}
"]" { return Parser.CLOSE_BRACKET;}
"real" { return Parser.FLOAT;}
"(" { return Parser.OPEN_PARENTHESES;}
")" { return Parser.CLOSE_PARENTHESES;}
"se" {return Parser.IF;}
"=" {return Parser.EQUALS;}
"!=" {return Parser.NOT_EQUALS;}
">" {return Parser.GREATER;}
"<" {return Parser.LESS;}
">=" { return Parser.GREATER_EQUALS;}
"<=" { return Parser.LESS_EQUALS;}
"<-" {return Parser.ATRIBUITION;}
"+" {return Parser.PLUS;}
"-" {return Parser.MINUS;}
"/" {return Parser.DIVISION;}
"*" { return Parser.MULTIPLICATION;}
"enquanto" { return Parser.WHILE;}
"senao" { return Parser.ELSE;}
"escrever" { return Parser.PRINT;}
"_" {return Parser.RETURN;}
[.] {return Parser.DOT;}
"nulo" {return Parser.NULL;}
"para" { return Parser.FOR;}
"ate" { return Parser.UNTIL;}
"passo" { return Parser.PASS;}
"length" { return Parser.LENGTH;}
"trim" { return Parser.TRIM;}
\".*\" {yyparser.yylval = new ParserVal(yytext());
return Parser.STRING_TO_PRINT;}
[a-zA-Z][a-zA-Z0-9_]* {
yyparser.yylval = new ParserVal(yytext());
return Parser.IDENTIFIER;
}
[-]?[0-9]+(\.[0-9]+)? { yyparser.yylval = new ParserVal(yytext());
return Parser.NUMBER;}
{NL}|" "|\t {}