La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

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 */ }


Descargar ppt "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."

Presentaciones similares


Anuncios Google