-
Notifications
You must be signed in to change notification settings - Fork 0
/
lab02_benavides_escolar_medina.l
113 lines (90 loc) · 2.23 KB
/
lab02_benavides_escolar_medina.l
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
%{
#include <stdio.h>
#include "lab02_benavides_escolar_medina.tab.h"
int error=0;
%}
%option yylineno
DIGITO [0-9]
LETRA [a-zA-Z]
IDENTIFICADOR ({LETRA}|"_")({LETRA}|{DIGITO}|"_")*
INTEGER ("+"|"-")?{DIGITO}+
LONGINTEGER {INTEGER}("L"|"l")
ENTERO {INTEGER}|{LONGINTEGER}
DECIMAL {DIGITO}+"."{DIGITO}*|"."{DIGITO}+|{DIGITO}+("."{DIGITO}+)?"e"("-")?{DIGITO}+
IMAGINARIO ({ENTERO}|{DECIMAL})("J"|"j")
NUMERO {DECIMAL}|{IMAGINARIO}
STRING "'"[^,\n]+"'"|"\""[^,\n]+"\""|("‘"|"’")[^,\n]+"’"
COMENTARIO "#"[^\n]*\n
BOOLEANO "True"|"False"
%%
"break" {return(BREAK);}
"and" {return(AND);}
"continue" {return(CONTINUE);}
"def" {return(DEF);}
"elif" {return(ELIF);}
"else" {return(ELSE);}
"for" {return(FOR);}
"if" {return(IF);}
"import" {return(IMPORT);}
"in" {return(IN);}
"is" {return(IS);}
"not" {return(NOT);}
"or" {return(OR);}
"pass" {return(PASS);}
"print" {return(PRINT);}
"return" {return(RETURN);}
"while" {return(WHILE);}
"range" {return(RANGE);}
"len" {return(LEN);}
"+" {return(OP_MAS);}
"-" {return(OP_MENOS);}
"*" {return(OP_MULT);}
"**" {return(OP_EXP);}
"/" {return(OP_DIV);}
"//" {return(OP_DIVENT);}
"%" {return(OP_MOD);}
"<<" {return(OP_LSHIFT);}
">>" {return(OP_RSHIFT);}
"&" {return(OP_BITAND);}
"|" {return(OP_OR);}
"^" {return(OP_BITXOR);}
"~" {return(OP_BITNOT);}
"<" {return(OP_MENORQUE);}
">" {return(OP_MARYORQUE);}
"<=" {return(OP_MENORIGUAL);}
">=" {return(OP_MAYORiGUAL);}
"==" {return(OP_IGUALQUE);}
"!=" {return(OP_DIFERENTEDE);}
"<>" {return(OP_DIFERENTEQUE);}
"(" {return(PARABRE);}
")" {return(PARCIERRA);}
"[" {return(CORABRE);}
"]" {return(CORCIERRA);}
"=" {return(ASIGNACION);}
";" {return(PUNTOCOMA);}
"," {return(COMA);}
":" {return(DOSPUNTOS);}
"." {return(PUNTO);}
">>=" {return(RSHIFTASIG);}
"<<=" {return(LSHIFTASIG);}
"+=" {return(SUMAASIG);}
"-=" {return(RESTAASIG);}
"*=" {return(MULTASIG);}
"/=" {return(DIVASIG);}
"//=" {return(DIVENTASIG);}
"&=" {return(BITANDASIG);}
"|=" {return(BITORASIG);}
"^=" {return(BITXORASIG);}
"**=" {return(POTEASIG);}
"%=" {return(MODASIG);}
{BOOLEANO} {return(BOOLEANO);}
{STRING} {return(STRING);}
{ENTERO} {return(ENTERO);}
{NUMERO} {return(NUMERO_L);}
{IDENTIFICADOR} {return(IDENTIFICADOR);}
{COMENTARIO} {}
" " {}
[\n] {return(NEWLINE);}
[\t] {}
. {return(ERROR);}
%%