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

Aprovecha el precio especial y haz tu profesi贸n a prueba de IA

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

0 D铆as
3 Hrs
34 Min
4 Seg

Parseo de booleanos

28/58
Recursos

驴C贸mo funcionan las expresiones booleanas en Platzi?

En el desarrollo de nuestro lenguaje de programaci贸n Platzi, podemos trabajar con expresiones booleanas que, como en otros lenguajes, tienen cuatro posibles evaluaciones: verdadero, falso, asignaciones y comparaciones. Al representar las expresiones booleanas en Platzi, utilizamos las palabras clave "verdadero" para true y "falso" para false. A continuaci贸n, exploraremos c贸mo se implementan estas expresiones booleanas en nuestro sistema, asegurando su correcta interpretaci贸n dentro del lenguaje.

驴C贸mo se incorpora el soporte para expresiones booleanas en Platzi?

La estrategia para implementar expresiones booleanas en Platzi consiste en lo siguiente:

  1. Crear y configurar pruebas: Comenzamos desarrollando una prueba llamada Test Boolean Expressions dentro del archivo parsertest.py. La prueba eval煤a expresiones booleanas con ejemplos como "verdadero" y "falso". Utiliza un lexer y un parser para verificar que la sintaxis sea correcta, interpretando estos keywords correctamente en el lenguaje de Platzi.

  2. Definir la clase Boolean en el AST: Importamos y definimos una nueva clase Booleana en el 脕rbol de Sintaxis Abstracta (AST). Esta clase extiende la clase Expresi贸n e implementa una interfaz para aceptar un token y un valor booleano opcional.

  3. Agregar m茅todos de prueba: Incluimos una funci贸n testBoolean para validar las expresiones booleanas en las pruebas, asegur谩ndonos de que sean instancias correctas y de que los valores evaluados coincidan con lo esperado.

  4. Modificar el parser: Importamos el nodo Boolean en el parser e indicamos c贸mo registrar y analizar booleanos a trav茅s de la funci贸n parseBoolean. Cuando un token coincide con tokenType.True o tokenType.False, se genera una instancia de Boolean y se establece su valor basado en una evaluaci贸n condicional.

驴C贸mo se estructuran las pruebas para asegurar su funcionamiento?

Para validar que las expresiones booleanas funcionan correctamente en Platzi, se crean pruebas unitarias espec铆ficas:

  • Estructura de prueba inicial: Se configura el origen de la prueba con expresiones como "verdadero" y "falso", que luego se env铆an al lexer y al parser. Se revisa que los tokens sean interpretados correctamente y que las estructuras de AST reflejen los nodos correspondientes.

  • Validaci贸n de expresiones literales: Extendi茅ndonos m谩s all谩 de strings e ints, nuestro m茅todo testLiteralExpression ahora soporta booleanos, permitiendo validar que los valores booleanos son procesados de forma exacta.

  • Confirmaci贸n del parser: Ajustamos el parser para manejar expresiones booleanas de manera fluida, probando que nuevas instancias sean creadas y verificando las propiedades internalizadas.

Con estas pruebas, cualquier error en la interpretaci贸n de booleanos se detectar铆a, garantizando que el sistema reconozca los booleanos correctamente en el contexto del lenguaje Platzi.

驴Cu谩les son los siguientes pasos?

Una vez implementado el soporte para booleanos:

  1. Ejecutamos las pruebas unitarias para asegurar que todos los casos se manejen sin errores de sintaxis y con la evaluaci贸n esperada.
  2. Corregimos cualquier bug detectado, como la falta de definici贸n del nodo boolean dentro de las pruebas iniciales.
  3. Continuamos mejorando el parser y agregando caracter铆sticas adicionales que permitan una mayor robustez y complejidad del lenguaje, manteniendo el enfoque modular y escalable.

Ahora que comprendes mejor c贸mo funcionan las expresiones booleanas y su implementaci贸n en un lenguaje de programaci贸n, te invitamos a experimentar con tus propias ideas. Desarrollar bases s贸lidas en estos conceptos te convertir谩 en un ingeniero capaz, listo para enfrentar y dise帽ar nuevas soluciones en el fascinante mundo de la programaci贸n. 隆Sigue adelante!

Aportes 1

Preguntas 0

Ordenar por:

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

A grandes rasgos lo entiendo, el parseo de booleanos estuvo f谩cil, pero a煤n me queda la espinita de la clase pasada jajaja, en resumen lo que hace el parser es empezar a identificar statements para ir agreg谩ndolas al AST, pero un statement ya es toda una cadena de tokens compuestas que tienen sentido para el lenguaje, as铆 que cada parser se encarga de revisar cada expresi贸n, que tengan una sintaxis correcta para entonces poder generar el nodo del 谩rbol de ese Statement, si lo traducieramos a un JSON ser铆a algo as铆:
.

Program: {

	ExpressionStatement: {
		token: {
			token_type: TokenType.LET,
			literal: "variable"
		}
		expresion: {
			Identifier: {
				token: {
					Token: {
						token_type: TokenType.LET,
						literal: "variable"
					}
				},
				value: "mi_var"
			}
		}
	}

}

Realmente es m谩s complejo que eso, pero algo as铆 es xD Pueden haber varios statements que contienen la definici贸n de dicho statement, y pueden tener identificadores, expresiones, etc. y todos relacionados con un token