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

Aprende Ingl茅s, Programaci贸n, AI, Ciberseguridad y m谩s a precio especial.

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

1 D铆as
3 Hrs
59 Min
30 Seg

Implementaci贸n del pratt parser

21/58
Recursos

Aportes 4

Preguntas 1

Ordenar por:

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

Buscando m谩s tipos de parsing me tope con que b谩sicamente solo hay dos tipos de parsing:}
.

  • Analizador sint谩ctico descendente (Top-Down-Parser): Un analizador puede empezar con el s铆mbolo inicial e intentar transformarlo en la entrada, intuitivamente esto ser铆a ir dividiendo la entrada progresivamente en partes cada vez m谩s peque帽as, de esta forma funcionan los analizadores LL, un ejemplo es el javaCC.
  • Analizador sint谩ctico ascendente (Bottom-Up-Parser): Un analizador puede empezar con la entrada e intentar llegar hasta el s铆mbolo inicial, intuitivamente el analizador intenta encontrar los s铆mbolos m谩s peque帽os y progresivamente construir la jerarqu铆a de s铆mbolos hasta el inicial, los analizadores LR funcionan as铆 y un ejemplo es el Yacc.

.
Realmente encontr茅 muy poca informaci贸n sobre el Pratt Parser, la mayor铆a de art铆culos hablan solamente de los tipos Top-Down-Parser y Bottom-Up-Parser 馃.
.
En Wikipedia se hace una menci贸n a los tipos Chart parser y Left corner parser, dejo aqu铆 el enlace por si a alguien le interesa 馃憖:
.
Analizador sint谩ctico (Parser)

Qu茅 es infix 馃樃, porque no tenia ni idea

En resumen forma parte de las formas de expresar una operaci贸n, estaba perdido con infix y lo dem谩s, as铆 que lo busque en wikipedia.
La notaci贸n infix es la que se usa en las matem谩ticas que nos ense帽an en la escuela, las operaci贸nes prefix y postfix se usan para hacer evaluaciones porque son m谩s eficientes, seg煤n wikipedia, yo no tengo ni idea 馃槃 si lo son.
En resumen son estos ejemplos:

  • Notaci贸n infix 鉃 3 + 3
  • Notaci贸n prefix+ 3 3
  • Notaci贸n postfix 鉃 3 3 +

Links referencias:

Notaci贸n infix: https://en.wikipedia.org/wiki/Infix_notation
Notaci贸n prefix (鈥淧olish鈥): https://en.wikipedia.org/wiki/Reverse_Polish_notation
Notaci贸n postfix (鈥淩everse Polish鈥): https://en.wikipedia.org/wiki/Reverse_Polish_notation
Parser por precedencia de operador: https://en.wikipedia.org/wiki/Operator-precedence_parser

Seg煤n la RAE, la traducci贸n de infix es infijo

Las t茅cnicas principales que existen son Top-Down-Parser y Bottom-Up-Parser o al menos las que logr茅 encontrar, de ah铆 se desglosan otro tipo de parser que se basan en esos dos