Trabalho Prático 2
Processamento de Linguagens
lexer.l
Ir para a documentação deste ficheiro.
1 /**
2  * @file lexer.l
3  * @author
4  * - José Moura <a13742|at|alunos.ipca.pt>
5  * - Óscar Silva <a14383|at|alunos.ipca.pt>
6  * - Daniel Filipe <a17442|at|alunos.ipca.pt>
7  * @date 01 Jan 2020
8  * @brief
9  * Ficheiro de instruções de lex
10  */
11 
12 %{
13  #include "../src/commands.h"
14  #include "../include/grammar.tab.h"
15 %}
16 
17 
18 %%
19 
20 NEW|new { return NEW; }
21 LOAD|load { return LOAD; }
22 INVERT|invert { return INVERT; }
23 LINE|line { return LINE; }
24 SAVE|save { return SAVE; }
25 COLOR|color { return COLOR; }
26 POINT|point { return POINT; }
27 RECT|rect { return RECT; }
28 RECTFILL|rectfill { return RECTFILL; }
29 CIRC|circ { return CIRC; }
30 CIRCFILL|circfill { return CIRCFILL; }
31 POLYLINE|polyline { return POLYLINE; }
32 FOR|for { return FOR; }
33 IN|in { return IN; }
34 DO|do { return DO; }
35 END|end { return END; }
36 \.\. { return TO; }
37 
38 RAND|rand { return RAND; }
39 
40 \; { return EOC; }
41 
42 x { return CRUZ; }
43 
44 [0-9]+ { yylval.num = atoi(yytext); return INT; }
45 
46 [a-v]+([0-9]+)? { yylval.str = strdup(yytext); return VAR_NAME; }
47 
48 \"[1-9a-zA-Z\.]+\" { yylval.str = strdup(yytext+1); return FILE_NAME; }
49 
50 
51 
52 [ \t\n\r] {}
53 . { return yytext[0]; }
54 
55 %%
56 
57 int yywrap() { return 1; }