tutorial tipos software que programar para integrado informatica español entorno desarrollo parsing compiler-construction ide

parsing - tipos - Conceptos necesarios para construir un IDE/compilador



solidity tutorial español pdf (6)

Cuando se trata de hacer un IDE (por ejemplo, SharpDevelop) o un compilador / analizador de lenguaje, ¿qué temas de informática necesito saber? No espero una lista completa de tutoriales en profundidad, sino solo una lista de temas que me beneficiarían para mejorar.

¿Estoy en lo cierto al pensar que un analizador tiene algunas reglas sobre la sintaxis / semántica de un idioma y valida el código en función de estas reglas? ¿Eso parece un enfoque simple?

Gracias


Lo siento, pero la respuesta es "Toda la informática y años de experiencia práctica".

Es un tema demasiado grande para los mortales y eclipses comunes, intellij, netbeans y Visual ... tienen el tema bastante bien cubierto.

Mire algo más pequeño y más alcanzable como un plugin de eclipse para algo que le interese.


Para implementar un compilador / lenguaje, necesitará una comprensión fundamental de:

  • BNF y EBNF - Grammers sin contexto (las reglas de sintaxis)
  • Técnicas y herramientas de análisis léxico (Lex / Bison)
  • Técnicas de análisis (por ejemplo, Recursive Decent, LL, LR)

Si está escribiendo un compilador, un buen curso de informática en Teoría de la traducción de idiomas o algo similar es bastante esencial. MIT Open Courseware ofrece una clase de "Ingeniería de Lenguaje de Computadora" a lo largo de esas líneas. Eso debería enseñarle el concepto de que mmattax menciona y proporciona un buen comienzo.

En cuanto a un IDE, eso es más un proyecto de aplicación de escritorio. Puede estar llamando a un compilador desde su IDE, pero en realidad no está compilando código (aunque, para ser justos, en un IDE sofisticado, podría estar analizando el código). Entonces, el conocimiento requerido para construir un IDE que llame a un compilador / enlazador externo se centraría más en el conjunto de herramientas de la interfaz de usuario de la plataforma que esté utilizando, quizás con un poco de teoría del compilador (como aprendería en un curso de compilación). ) si quieres analizar el código.


Un IDE, un compilador y un depurador son tres bestias diferentes.

Aquí hay una selección rápida y ligeramente aleatoria de algunos enlaces que he encontrado interesantes o inspiradores cuando pienso en construir herramientas de modelado para lenguajes de simulación, que es lo más cercano que llego a IDE:

Existe un sesgo en esos enlaces hacia patrones que ayudan a leer y navegar en lugar de escribir código, y hacia sistemas que el usuario extiende al usarlos en lugar de hacerlo como un ciclo separado; si desea una interfaz orientada a tareas o plugins estáticos, los proyectos para IDEs existentes como Eclipse son el lugar para buscar.


Escritura de compiladores e intérpretes: un enfoque de ingeniería de software [Rústica] Ronald Mak -> este es un gran libro para comenzar. Lo guía a lo largo de todo el proceso de creación de un compilador y una identificación con un depurador y muchas otras cosas que necesita. Al final del libro, tendrá una buena idea de qué hacer para ramificarse por su cuenta.

También es posible que desee consultar los Patrones de Implementación del Idioma publicados por PragProg.com.


bien para desarrollar un compilador que necesita comprender los siguientes temas

  • finite automatizar (DFA)
  • gramática libre de contexto (debe definir una gramática antes de comenzar a codificar, es una impresión azul de su lenguaje / compilador)

Después de hacer con la parte teórica, entonces necesitas desarrollar los siguientes componentes para tu compilador

  1. Lexical Analyzer (validar tokens para su idioma)
  2. Parser (validar frases de tu idioma)
  3. Plan de traducción (convierta su código (nivel alto) en 3 código de dirección (código de idioma de máquina))
  4. Máquina virtual (Generación de código / producción real de salida de tu código)

Nota: la salida de cada componente se ingresa al siguiente componente y la entrada de Lexical Analyzer es su código real y, en su mayoría, el compilador se desarrolla utilizando el método formal (un patrón de diseño de procedimiento)