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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [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 6,678 veces)
Miky Gonzalez

Desconectado Desconectado

Mensajes: 87

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 pm »

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.248


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

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 pm »

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 pm por Alien-Z » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consutla Analizador Sintactico
.NET (C#, VB.NET, ASP)
Choclito 0 3,330 Último mensaje 12 Marzo 2010, 01:38 am
por Choclito
¿Existe Lex para VB6? - Analizador léxico
Programación Visual Basic
EddyW 0 2,765 Último mensaje 23 Junio 2010, 03:54 am
por EddyW
simular arbol sintactico en c++
Programación C/C++
luna_sol 1 6,819 Último mensaje 16 Noviembre 2010, 12:14 pm
por Artikbot
Ayuda con Analizador Lexico en php « 1 2 »
PHP
include (); 17 11,188 Último mensaje 5 Junio 2012, 16:15 pm
por include ();
Representar árbol sintáctico en Python
Scripting
Tuplado 1 4,920 Último mensaje 6 Junio 2012, 14:50 pm
por Tuplado
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines