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

Estructura y definici贸n de nodos del AST en Python

13/58
Recursos

Aportes 3

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Una expresi贸n regresa un valor, un statement no Recuerden eso 馃憖
.
Si a煤n les quedan dudas de qu茅 es abstracci贸n, podemos decir que es como 鈥渦na plantilla鈥 de una clase. Les recomiendo mucho tomar el Curso de Programaci贸n Orientada a Objetos: POO, pero a grandes rasgos, estamos definiendo una clase que le dice a sus hijos: 鈥淥ye, si me vas a heredar tienes que implementar estos m茅todos s铆 o s铆鈥, es una especie de contrato, algo as铆 como una interface que de igual forma, es una especie de contrato. Cuando una clase implementa una interface (hablando de otros lenguajes), lo que est谩n diciendo es que esa clase va a tener s铆 o s铆 dichos m茅todos que la interface propone.
.
Esto sirve para que cada que una clase herede de tu clase abstracta, tengas la seguridad de que esa clase que te est谩 heredando tenga s铆 o s铆 los m茅todos de la misma clase abstracta 馃槃
.
Aqu铆 un post en Platzi explicando m谩s a fondo esto:
.
https://platzi.com/blog/clases-abstractas/

Que son expressions, statements y definitions? Porque no lo se 馃槃

Expression:

Una entidad sintactica; es decir una serie de tokens que tienen sentido para el lenguaje que estamos desarrollando, que sera evaluado para determinar su valor; algo como 1 + 2 se evalua como 3, pero tambi茅n la evaluaci贸n podria no terminar, dejando a la expression sin un valor definido, como en 1 / 0 donde evaluar la expression no genera ningun valor.

Statement:

Un comando que altera el estado de la maquina; estado de la maquina no lo entiendo todav铆a pero mas o menos le entiendo como si el programa fuera una puerta que puede estar en dos estados, abierta o cerrada, y un statement cambia de manera explicita del estado en el que se encuentre la puerta/programa.

Declaration:

Otra entidad sintactica como las expressions pero lo que hace es crear otro identificador en el programa, como el nombre de una variable, algo as铆 variable nombre;


Links referencias

  • Estado de la maquina: Wikipedia contributors. (2022, November 23). Finite-state machine. In Wikipedia, The Free Encyclopedia. Retrieved 04:47, November 25, 2022, from https://en.wikipedia.org/w/index.php?title=Finite-state_machine&oldid=1123320568
  • Expression, statement y declaration definiciones: Mitchell, J. (2002). Concepts in Programming Languages. Cambridge: Cambridge University Press, 3.4.1 Statements and Expressions, p. 26

Implementaci贸n de los clases Statement y Expresi贸n