Introducción al desarrollo de intérpretes y lenguajes de programación

1

Aprende a desarrollar lenguajes de programación con intérpretes

2

Desarrolla LPP o Lenguaje de Programación Platzi

Construcción del lexer o tokenizador

3

¿Qué es análisis léxico? Funcionamiento del lexer y tokens

4

Estructura y definición de tokens en Python

5

Lectura de caracteres y tokens

6

Tokens ilegales, operadores de un solo carácter y delimitadores

7

Reconocimiento y diferenciación entre letras y números

8

Declaración y ejecución de funciones

9

Extensión del lexer: condicionales, operaciones y booleanos

10

Operadores de dos caracteres

11

Primera versión del REPL con tokens

Construcción del parser o analizador sintáctico

12

¿Qué es un parser y AST?

13

Estructura y definición de nodos del AST en Python

14

Parseo del programa o nodo principal

15

Parseo de assignment statements

16

Parseo de let statements

17

Parseo de errores

18

Parseo del return statement

19

Técnicas de parsing y pratt parsing

20

Pruebas del AST

21

Implementación del pratt parser

22

Parseo de Identifiers: testing

23

Parseo de Identifiers: implementación

24

Parseo de enteros

25

Prefix operators: negación y negativos

26

Infix operators y orden de las operaciones: testing

27

Infix operators y orden de las operaciones: implementación

28

Parseo de booleanos

29

Desafío: testing de infix operators y booleanos

30

Parseo de expresiones agrupadas

31

Parseo de condicionales: testing y AST

32

Parseo de condicionales: implementación

33

Parseo de declaración de funciones: testing

34

Parseo de declaración de funciones: AST e implementación

35

Parseo de llamadas a funciones: testing y AST

36

Parseo de llamadas a funciones: implementación

37

Completando los TODOs o pendientes del lexer

38

Segunda versión del REPL con AST

Evaluación o análisis semántico

39

Significado de símbolos

40

Estrategias de evaluación para intérpretes de software

41

Representación de objetos

42

Evaluación de expresiones: enteros

43

Evaluación de expresiones: booleanos y nulos

44

Evaluación de expresiones: prefix

45

Evaluación de expresiones: infix

46

Evaluación de condicionales

47

Evaluación del return statement

48

Manejo de errores

49

Ambiente

50

Bindings

51

Evaluación de funciones

52

Llamadas a funciones

Mejora del intérprete

53

Implementación de strings

54

Operaciones con strings

55

Built-in functions: objeto y tests

56

Built-in functions: evaluación

Siguientes pasos

57

Retos para expandir tu intérprete

58

Continúa con el Curso de Creación de Compiladores de Software

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Significado de símbolos

39/58
Recursos

¿Qué es el análisis en lenguajes de programación?

El análisis en lenguajes de programación es mucho más que solo entender los símbolos (o tokens) y su sintaxis, como el correcto uso de paréntesis, comas y puntos y comas. Aunque estos elementos son fundamentales, el verdadero núcleo de un lenguaje de programación es el análisis semántico, el proceso que otorga significado a estos símbolos. Sin él, expresiones como "2 más 2" serían simples estructuras, desprovistas de sentido. Por ejemplo, determinar si una expresión debe evaluar a verdadero o falso, como sucede con el número 5 en diferentes lenguajes, forma parte de estas decisiones semánticas.

¿Cómo se define el comportamiento de un lenguaje?

Definir el comportamiento de un lenguaje implica tomar varias decisiones semánticas que afectan la evaluación de las expresiones:

  • Evaluación de expresiones: Decisiones sobre cómo deben comportarse las operaciones básicas, como la suma o la división.
  • Evaluación de condiciones: Como en algunos lenguajes, un valor numérico debe ser transformado en un valor booleano para evaluaciones condicionales.
  • Orden de ejecución: Decidir si el lenguaje evaluará los parámetros de una función de izquierda a derecha o viceversa.

Cada elección determina cómo un intérprete o compilador procesará una expresión durante la ejecución del programa.

¿Cómo afectan las decisiones de evaluación al diseño de un lenguaje?

Las decisiones de evaluación no solo definen cómo opera el lenguaje, sino que también influyen en su diseño. Por ejemplo, en Platzi, un lenguaje de programación ficticio usado para ilustrar conceptos:

  • Cuando dos funciones son llamadas como parámetros de una fórmula, la función que está más a la izquierda se evalúa primero.
  • Está programado para seguir un orden específico, que es una decisión consciente del diseñador del lenguaje, no una característica inherente de todos los lenguajes.

Este nivel de detalle en la implementación de un lenguaje es fundamental para soportar su sintaxis y semántica deseadas.

Recuerda que, al aprender estas estrategias de evaluación y diseño de lenguajes, no solo se trata de comprender a fondo un lenguaje existente, sino de abrir la puerta a la creación de nuevos lenguajes y herramientas, lo que puede tener un impacto significativo en el mundo tecnológico actual. ¡Sigue explorando y expandiendo tus conocimientos!

Aportes 1

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Es increíble pensar que todo lo que hemos hecho hasta ahora es únicamente identificar tokens y darle un orden que tiene sentido, pero realmente hasta ahora el lenguaje no hace nada…
.
Lo genial de esta parte que viene es que podemos ser creativos, y si queremos podemos primero evaluar a dos() y luego a uno(), o podemos hacer algo todavía más loco, decir que 5 + 2 es igual a 3 porque podemos interpretar el caracter + como una resta, el caracter + es solo un símbolo gráfico que nosotros asociamos a la suma, pero para la computadora, eso puede ser una resta 😄! Pd. No hagas esto último… ¡Pero imagina las posibilidades!, prácticamente tenemos el poder en nuestras manos ^^