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

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

1/58
Recursos
Transcripción

Aportes 19

Preguntas 2

Ordenar por:

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

Uhhh lanzaron el curso 10 minutos antes xD Aquí estoy listo AHHHHH Vamos a armar el LPP!!! En serio este curso me hace tanta ilusión que lo inicie 10 minutos antes xD Inicié a aprender Python hace 3 días solo para este curso, me fue muy fácil así que estoy listo
.
¡VAMOS A CREAR UN LENGUAJE DE PROGRAMACIÓN!

y si lo construimos con C 😈

Efectivamente, al final del día, todo es código que se simplifica al más bajo nivel; ceros y unos. Simpre, tendremos que conseguir que nuestro código fuente se convierta a código máquina de alguna manera antes de que pueda funcionar, y las dos formas principales de hacerlo son: lo que se llama la interpretación del código fuente, y la compilación del código fuente.

Excelente curso, será bastante épico!

Un curso de ensueño. En verdad que sí. 😎💚

exelente !!! grande platzi… esto se ve interesante y de gran aporte siempre e tenido la duda de como se realiza un lenguaje de programación, vamos a ello.

Estoy muy emocionado por este curso y si lanzan una continuación con un curso de compiladores sería excelente.

Vamoooooooooos

Brutal!!!

¿ Se puede usar la versión 3.9.1? Creo que es más o menos lo mismo.

Desarrollo basado en testing, me llama la atencion desde que lo escuche por primera vez, no habia pensado en desarrollar de esa forma “inversa”, aun que tiene mucho sentido

tenia tiempo que no me llamaba tanto la atención un curso hasta que vi este y me plantee que era interesante saber como funcionaba por detras los leguajes de programación. Si bien tengo conocimientos mas profundos en como funciona los códigos en ensamblador y el procesamiento de datos en el procesado todavía tengo como un limbo de conexión entre eso y los lenguajes de programación

Para los que van iniciando y ven que no entienden ni papa, les recomiendo este libro, el autor subio la versión web gratis pero pueden comprarlo también si lo quieren apoyar. <https://craftinginterpreters.com/contents.html>

Una ventaja de usar los typings en python es que si tu ide esta bien configurado, te dara hints de los tipos que utilizas por ejemplo:

def my_function(a, b):
	return a + b

En este segundo podremos recibir hints como a.to_bytes() si nuestro ide tiene un lsp de python configurado, es especialmente útil cuando se tiene muchas clases.

def my_function(a: int, b: int):
	return a + b
Como le doy me encanta a un video?

Me encanta que existan esta clase de cursos

Interesante, no me había imaginado hacer esta inmersión. ¡Gracias Platzi!

Muy emocionado de este nuevo curso! platzi tiene un curso para casi cualquier tema que quieras tratar

Este profesor siempre me hace querer seguir con sus cursos, se le nota la emoción por lo que hace

Ya se estaban demorando de presentar un curso como este.