Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Analizadores sintácticos funcionales en JavaScript

Analizadores sintácticos funcionales en JavaScript

LimaJS 29 Mayo 2020

Lupo Montero

May 29, 2020
Tweet

More Decks by Lupo Montero

Other Decks in Programming

Transcript

  1. ⚠ Lo que vamos a ver a continuación probablemente no

    sea algo que quieras o debas aplicar “literalmente” en tus proyectos de JavaScript, pero es un lindo ejemplo para pensar en funciones, HOFs, composición de funciones y arquitectura.
  2. Parte 1 1. ¿Por qué? 2. ¿Qué es parsing? a.

    Análisis sintáctico b. Gramática formal c. Parser en ciencias de la computación 3. ¿Qué es la programación funcional? 4. Definición de parser funcional 1. Ejemplo/demo: parser de expresiones aritméticas a. Gramática formal b. Primitivos i. char ii. choice iii. seq c. Implementación 2. Otros ejemplos Parte 2
  3. ¿Por qué les quiero hablar de esto? • Vivimos rodeados

    de parsers (ej: JSON.parse, http parser de node, parsers de HTML, CSS, acorn, esprima …) • Ciencias de la computación • FP / Estilo declarativo • Belleza / elegancia • Versatilidad de JavaScript como lenguaje de implementación • Me gustan los parsers (psl)
  4. ¿Por qué les quiero hablar de esto? • Vivimos rodeados

    de parsers (ej: JSON.parse, http parser de node, parsers de HTML, CSS, acorn, esprima …) • Ciencias de la computación • FP / Estilo declarativo • Belleza / elegancia • Versatilidad de JavaScript como lenguaje de implementación • Me gustan los parsers (psl) find . -type d -name psl
  5. ¿Qué es parsing? Parsing, syntax analysis, or syntactic analysis is

    the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar. The term parsing comes from Latin pars (orationis), meaning part (of speech). https://en.wikipedia.org/wiki/Parsing
  6. ¿Qué es parsing? Parsing, syntax analysis, or syntactic analysis is

    the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar. The term parsing comes from Latin pars (orationis), meaning part (of speech). https://en.wikipedia.org/wiki/Parsing
  7. Gramática formal (McKeeman Form) expr term '+' expr term term

    factor '*' term factor factor '(' expr ')' number
  8. Tipos de parsers en diseño de compiladores Parser Top-down Bottom-up

    Recursive descent LL(1) LR Operator precedence LR(0) SLR(1) LALR(1) CLR(1)
  9. Tipos de parsers en diseño de compiladores Parser Top-down Bottom-up

    Recursive descent LL(1) LR Operator precedence LR(0) SLR(1) LALR(1) CLR(1) Parsers funcionales (Parser combinators)
  10. ¿Qué es programación funcional? • Paradigma de programación • Estilo

    declarativo (opuesto a imperativo) • Lógica combinatoria / cálculo lambda
  11. Principios de la programación funcional • Funciones puras (predecibles y

    sin efectos colaterales) • Composición de funciones • Evitar estado compartido • Evitar estado cambiante (inmutabilidad)
  12. Gramática formal (McKeeman Form) expr term '+' expr term term

    factor '*' term factor factor '(' expr ')' number
  13. Links / Bibliografía • Código fuente y ejemplos • Introducción

    a programación funcional en JavaScript — Parte 1 • Introducción a la programación funcional en JavaScript — Parte 2: Funciones Puras • Introducción a la programación funcional en JavaScript — Parte 3: Composición • Functional Parsing - Computerphile • Parsing - Wikipedia • Parser combinator - Wikipedia • Syntax diagram - Wikipedia • McKeeman Form • JSON spec • Executable Attribute Grammars for Modular and Efficient Natural Language Processing, Rahmatullah Hafiz, University of Windsor 2011
  14. Fin