Articulo de referencia

Análisis sin escáner

En informática , el análisis sin escáner (también llamado análisis sin analizador léxico ) realiza la tokenización (dividir un flujo de caracteres en palabras) y el análisis sin...

En informática , el análisis sin escáner (también llamado análisis sin analizador léxico ) realiza la tokenización (dividir un flujo de caracteres en palabras) y el análisis sintáctico (organizar las palabras en frases) en un solo paso, en lugar de dividirlo en una secuencia de un analizador léxico seguido de un analizador sintáctico , que se ejecutan simultáneamente . Una gramática de lenguaje no utiliza escáner si utiliza un único formalismo para expresar tanto la estructura léxica (nivel de palabra) como la estructura a nivel de frase del lenguaje.

La división del procesamiento en un analizador léxico seguido de un analizador sintáctico es más modular; el análisis sin escáner se utiliza principalmente cuando no se necesita o no se desea una distinción clara entre analizador léxico y analizador sintáctico. Algunos ejemplos de casos en los que esto es apropiado incluyen TeX , la mayoría de las gramáticas wiki , makefiles , lenguajes de programación simples específicos de la aplicación y Raku .

Ventajas

  • Sólo se necesita un metalenguaje
  • La estructura léxica no regular se maneja fácilmente
  • La "clasificación de tokens" no es necesaria, lo que elimina la necesidad de modificaciones de diseño como " el truco del analizador léxico " y palabras reservadas del lenguaje (como "while" en C ).
  • Las gramáticas pueden ser compositivas (se pueden fusionar sin intervención humana) [a]

Desventajas

  • Dado que el análisis léxico y el análisis sintáctico se combinan, el analizador resultante tiende a ser más complicado y, por lo tanto, más difícil de entender y depurar. Lo mismo sucederá con la gramática asociada, si se utiliza una gramática para generar el analizador.
  • El analizador resultante tiende a ser significativamente menos eficiente que una secuencia de analizador léxico-analizador con respecto tanto al tiempo como a la memoria. [1]

Implementaciones

  • SGLR es un analizador para el Formalismo de Definición de Sintaxis (SDF) modular, y es parte del Metaentorno ASF+SDF y del sistema de transformación de programas Stratego/XT.
  • JSGLR, una implementación Java pura de SGLR, también basada en SDF.
  • TXL admite el análisis a nivel de caracteres.
  • dparser genera código ANSI C para analizadores GLR sin escáner .
  • Spirit permite el análisis tanto con escáner como sin escáner.
  • SBP es un analizador sin escáner para gramáticas booleanas (un superconjunto de gramáticas libres de contexto), escrito en Java.
  • Laja es un generador de analizador sintáctico de dos fases sin escáner con soporte para mapear las reglas gramaticales en objetos, escrito en Java.
  • Las gramáticas Raku son una característica del lenguaje de programación de propósito general Raku .
  • PyParsing es un analizador sin escáner escrito en Python puro.
  • META II tiene funciones de análisis de tokens incorporadas.
  • TREE-META, al igual que META II, tampoco tiene escáner y cuenta con funciones de análisis léxico integradas.
  • Compilador CWIC para escribir e implementar compiladores. Tiene reglas de token como parte de su lenguaje. Las reglas en CWIC se compilaron en funciones booleanas que devolvían éxito o fracaso.

Notas

  • a Esto se debe a que el análisis a nivel de caracteres hace que el lenguaje reconocido por el analizador sea un único lenguaje libre de contexto definido sobre caracteres, a diferencia de un lenguaje libre de contexto de secuencias de cadenas en lenguajes regulares . Algunos analizadores sin analizador léxico manejan toda la clase de lenguajes libres de contexto, que está cerrada bajo la composición.

Referencias

  1. ^ Economopoulos, Giorgios; Klint, Paul; Vinju, Jurgen (2009). "Análisis GLR más rápido sin escáner" (PDF) . Construcción de compiladores . Apuntes de clase en informática. Vol. 5501. págs. 126–141. doi : 10.1007/978-3-642-00722-4_10 . ISBN . 978-3-642-00721-7.

Lectura adicional

  • Visser, E. (agosto de 1997). Análisis LR generalizado sin escáner . Países Bajos: Universidad de Ámsterdam. CiteSeerX  10.1.1.37.7828 .
Retrieved from "https://en.wikipedia.org/w/index.php?title=Scannerless_parsing&oldid=1257255818"