elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  [Ayuda-C] Programación de un analizador léxico-sintáctico
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda-C] Programación de un analizador léxico-sintáctico  (Leído 1,490 veces)
Miky Gonzalez

Desconectado Desconectado

Mensajes: 86

http://mikygonzalez.comule.com/blog/


Ver Perfil WWW
[Ayuda-C] Programación de un analizador léxico-sintáctico
« en: 6 Agosto 2013, 16:07 »

Buenas a todos, inicio un nuevo POST para pedirles ayuda sobre la programación de un analizador léxico-sintáctico. No entiendo los códigos que vi por ahí, o si los entiendo, son demasiados complejos para implementarlos y hacer una adaptación.

Les pondré un ejemplo si no entienden lo que quiero conseguir. Supongamos un fichero de texto como el que sigue:

Código
  1. var
  2.    int a, b, c;
  3.    string d, e, f;
  4. begin
  5.    print("hola")
  6. end

El desglosamiento del programa podría seguir un arbol como:

Declarar variables
   |-a como entero
   |-b como entero
   |-c como entero
   |-d como cadena
   |-e como cadena
   |-f como cadena
Iniciar ejecucion
   |- llamar funcion print con argumento hola como cadena
Fin ejecucion


Y que eso me genere unos ciertos opcodes, (no es necesario que el programa genere el arbol anterior), por ejemplo podria ser:
 0x00 a (declarar int a), 0x00 b (declarar int b) ... 0x01 d (declarar string d) ... 0x02 "hola" (llamar funcion print con argumento hola).

No se como implementar esto en C. ¿Alguien puede ayudarme?

Saludos,
   Miky Gonzalez


En línea

Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:


EN CONSTRUCCIÓN
eferion


Desconectado Desconectado

Mensajes: 1.129


Ver Perfil
Re: [Ayuda-C] Programación de un analizador léxico-sintáctico
« Respuesta #1 en: 6 Agosto 2013, 16:55 »

Has visto alguna vez una especificación de un lenguaje de programación ??

Si la respuesta es negativa, búscate el estándar de cualquier lenguaje... javascript, c, c++, ruby, ... verás que disponen de una especificación bastante completa que cubre todos los posibles casos de uso del lenguaje.

Ese estándar es la base sobre la que se asienta el lenguaje y a partir de la cual se desarrolla el mismo.

Para empezar careces de esa base, lo cual implica que no te has parado a pensar las posibles implicaciones que puede tener cualquier característica que le añadas al lenguaje, y eso suele conllevar como norma general al fracaso del proyecto al llegar a vías sin salida cuyo arreglo requiere demasiadas horas de trabajo.

Si quieres desarrollar una suerte de lenguaje de scripting, primero acota ese lenguaje y escribe una especificación sobre el mismo. Después revisa esa especificación y busca puntos débiles, posibles fallos y errores y detalles sin especificar que hayas pasado por alto.

Cuando termines con esa tarea tendrás una idea bastante buena de cómo ha de funcionar tu analizador.

Sin especificación tu idea es bastante posible que no alcance buen puerto... no ponerle límites, por ejemplo, da pie a que se te ocurran ideas maravillosas que tengan un impacto terrible en tu sistema... la pena es que para cuando te quieras dar cuenta habrás dedicado una cantidad ingente de horas y deshacerlo no va a ser moco de pavo.



En línea

Alien-Z

Desconectado Desconectado

Mensajes: 177


C++ Programmer


Ver Perfil
Re: [Ayuda-C] Programación de un analizador léxico-sintáctico
« Respuesta #2 en: 6 Agosto 2013, 23:16 »

Miky Gonzalez:

Estás planteando uno de los tres grandes aspectos necesarios para programar un compilador:

1-Analizador Léxico
2-Analizador Sintáctico
3-Analizador Semántico

Se suelen utilizar otros métodos que harían tu aplicación más eficiente y cómoda de programar, pero usando lenguajes de alto nivel también es posible con las Expresiones Regulares, busca información sobre ello, es la herramienta clave para el analizador léxico.

Esto que planteas es un tema muy interesante, en la universidad tuve que dar una asignatura cuatrimestral solo para poder diseñar un compilador que analizara instrucciones básicas de lenguajes imperativos, en cambio los compiladores para lenguajes de programación orientados a objetos son otro mundo.

Un saludo.
« Última modificación: 6 Agosto 2013, 23:24 por Alien-Z » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
DoS en Internet Explorer (análisis sintáctico HTML)
Noticias
wolfbcn 0 334 Último mensaje 28 Diciembre 2005, 20:14
por wolfbcn
CREAR UN ANALIZADOR LEXICO
Programación C/C++
jart 1 874 Último mensaje 14 Marzo 2006, 18:12
por Ragnarok
ayuda analizador lexico
Programación C/C++
Carlosnuel 11 3,925 Último mensaje 4 Octubre 2006, 17:52
por Ragnarok
analizador lexico
Programación General
tito_hack 1 1,927 Último mensaje 21 Septiembre 2008, 10:58
por AntonioMeucci
Ayuda con Analizador Lexico en php « 1 2 »
PHP
include (); 17 2,845 Último mensaje 5 Junio 2012, 16:15
por include ();
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines