¿Qué hace que algunas cosas sean más fáciles de analizar que otras?


8

Estaba leyendo la página de Wikipedia para WebAssembly y dice: " WebAssembly está ... diseñado para ser más rápido de analizar que JavaScript ", lo que me hizo pensar, qué hace que un cierto lenguaje o formato de datos sea más rápido de analizar que otros y qué algoritmos de análisis son ¿usado?

Respuestas:


18

Este tema es muy complejo. Puedes buscar en Google algoritmos de analizador y obtendrás mucho material detallado.

En general:

  • Cuantas menos ambigüedades se deben resolver, más rápido será el proceso de análisis.
  • Cuantos más tokens se tengan que considerar antes de tomar una decisión, más complejo se vuelve.

Por ejemplo:
cuando un analizador JS ve la functionpalabra clave en este código:, function xyz(a, b) {}la palabra clave de función es ambigua. Primero tiene que procesar el siguiente token xyzy ver que es un identificador antes de poder decidir que es una declaración de función.

Sin embargo, si el siguiente token fuera una (que se trata de un literal función: function(a, b) {}. Eso requiere que el analizador se comporte de manera muy diferente, por lo tanto, más código en el analizador, por lo tanto, una ejecución más lenta.

Si hubiera diferentes palabras clave para estos dos propósitos, no habría ambigüedad:

function_decl xyz(a, b, c) {} y function_lit(a, b, c) {}

Sin embargo, nadie querría escribir en ese idioma. Pero no se supone que WebAssembly esté escrito a mano. Eso permite que el lenguaje se adapte a las máquinas, en lugar de a los humanos.


1
¿Significaría esto que Lisp se analiza muy fácilmente?
Moisés

99
@Moses: Sí, escribir un analizador de lisp ingenuo es trivial, porque la sintaxis es homoicónica con la estructura de un árbol de sintaxis abstracta y casi no existen ambigüedades.
Phoshi

44
Otro buen ejemplo es el código de bytes, a menudo se puede analizar con una declaración de cambio de bucle y eso es todo.
whatsisname

@whatsisname De hecho, lo mismo se aplica a la Asamblea ordinaria y la Asamblea Web
marstato
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.