-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreconocedor.lex
63 lines (53 loc) · 3.33 KB
/
reconocedor.lex
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
%{
#include<stdlib.h>
#include<math.h>
#include "reconocedor.tab.h"
int line = 1;
%}
LETRA [A-Za-z]
DIGITO [0-9]
INT (-?[1-9][0-9]{0,4})|0
FLOAT (-?[0-9]{0,8}+"."+[0-9]{0,8})
ID [_$a-zA-Z][_$a-zA-Z0-9]
%%
"end" {return END; /* Se encontr� la palabra end */}
"program" {return PROGRAM; /* Se encontr� la palabra program */}
"begin" {return BEGINI; /* Se encontr� la palabra begin */}
"int" {yylval.yytipo = 'i'; return INT; /* Se encontr� la palabra int */}
"float" {yylval.yytipo = 'f'; return FLOAT; /* Se encontr� la palabra float */}
"var" {return VAR; /* Se encontr� la palabra var */}
"if" {return IF; /* Se encontr� la palabra if */}
"then" {return THEN;}
"endif" {return ENDIF; /* Se encontr� la palabra endif */}
"else" {return ELSE; /* Se encontr� la palabra else */}
"for" {return FOR; /* Se encontr� la palabra for */}
"step" {return STEP; /* Se encontr� la palabra step */}
"do" {return DO; /* Se encontr� la palabra step */}
"while" {return WHILE; /* Se encontr� la palabra while */}
"repeat" {return REPEAT; /* Se encontr� la palabra repeat */}
"until" {return UNTIL; /* Se encontr� la palabra until */}
"read" {return READ; /* Se encontr� la palabra read */}
"print" {return PRINT; /* Se encontr� la palabra print */}
"fun" {return FUN; /* Se encontr� la palabra fun */}
"return" {return RETRN; /* Se encontr� la palabra return */}
[_$a-zA-Z][_$a-zA-Z0-9]* {strcpy(yylval.yyid, yytext); return IDF; /* Se encontr� un identificador */}
{FLOAT} {yylval.yyfloat = atof(yytext); return NFLOAT; /* Se encontr� un flotante */}
{INT} {yylval.yyint = atoi(yytext); return NINT; /* Se encontr� un entero */}
"+" {return SUMA; /* Se encontr� un s�mbolo de suma */}
"-" {return RESTA; /* Se encontr� un s�mbolo de resta */}
"*" {return MULTI; /* Se encontr� un s�mbolo de multiplicaci�n */}
"/" {return DIVIDE; /* Se encontr� un s�mbolo de divisi�n */}
"(" {return PARENI; /* Se encontr� un "(" */}
")" {return PAREND; /* Se encontr� un ")" */}
"=" {return EQUAL; /* Se encontr� un "=" */}
"<" {return MENORQ; /* Se encontr� un "<" */}
">" {return MAYORQ; /* Se encontr� un ">" */}
"<=" {return MENORIQ; /* Se encontr� un "<" */}
">=" {return MAYORIQ; /* Se encontr� un ">" */}
";" {return PCOMA; /* Se encontr� un ";" */}
":" {return DOSPUNTOS; /* Se encontr� un ":" */}
"," {return COMA; /* Se encontr� un "," */}
"<-" {return ASSIGN;}
[ \t] {/* Ignora espacio o tabulacion */}
[\n] {line++; /* para la funcion error*/}
%%