Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porNatanael Marciel Modificado hace 10 años
1
Aplicación de autómatas: Analizador léxico 1. q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
2
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
3
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
4
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
5
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
6
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
7
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
8
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ } Identificador
9
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
10
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
11
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ } Entero sin signo
12
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ } Suma
13
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ } Error o token no definido
14
q0q0 q1q1 q2q2 L|_ L|_ |D otro q3q3 q4q4 D D 1 1 q5q5 + q6q6 1 devolver símbolo a la entrada estado = 0 switch (estado) { case 0: if (isalpha(*p) || *p == '_') estado = 1; else if (isdigit(*p)) estado = 3; else if (*p == '+') estado = 5; else estado = 6; p++; /* avanzar en la cadena de entrada */ break; case 1: if (isalpha(*p) || *p == '_' || isdigit(*p)) estado = 1; else estado = 2; p++; /* avanzar en la cadena de entrada */ break; case 2: printf(" ID"); /* en los estados de aceptación no hay lectura */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 3: if (isdigit(*p)) estado = 3; else estado = 4; p++; /* avanzar en la cadena de entrada */ break; case 4: printf(" ENT"); /* ENTERO */ estado = 0; /* se inicia estado para un nuevo token */ p--; /* se devuelve un caracter a la entrada */ break; case 5: printf(" SUM"); /* SUMA */ estado = 0; /* se inicia estado para un nuevo token */ break; case 6: printf(" ERR"); /* ERROR O TOKEN DESCONOCIDO */ estado = 0; /* se inicia estado para un nuevo token */ }
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.