eval5: escrito mecanografiado intérprete JavaScript

eval5 se basa mecanografiado JavaScript intérprete escrito en apoyo del 100% para la sintaxis ES5.

Dirección del proyecto: https://github.com/bplok20010/eval5

escenarios de uso

  • entorno de navegador requiere JavaScript entorno de ejecución de caja de arena guión
  • control de la ejecución de código largo
  • No es compatible con eval Functionel entorno de ejecución de JavaScript: carta applet de micro
  • Estudio / aprendizaje

instalar

npm install --save eval5

uso

import { Interpreter } from 'eval5';

const ctx = {
    console,
    hello(){
        console.log('hello eval5')
    }
}
var interpreter = new  Interpreter(ctx, {
    timeout: 1000
});

var result = interpreter.evaluate(`
    hello();
    function sum(a, b) {
        return a + b;
    }
    sum(100,2 00);
`)

console.log(result); // 300

eval5 es6 sintaxis no es compatible, puede primera ES6 o mecanografiado a su vez en ES5

principio

  1. eval5 compilado desde el primer árbol de sintaxis abstracta estructura de árbol de código fuente (AST).
    árbol de sintaxis abstracta por diferentes nodos, cada nodo identifica el tipo de declaraciones o expresiones diferentes, por ejemplo: el árbol de sintaxis abstracta 1 + 1
    {
    "type": "Program",
    "body": [
        {
            "type": "ExpressionStatement",
            "expression": {
                "type": "BinaryExpression",
                "operator": "+",
                "left": {
                    "type": "Literal",
                    "value": 1,
                    "raw": "1"
                },
                "right": {
                    "type": "Literal",
                    "value": 1,
                    "raw": "1"
                }
            }
        }
    ],
    "sourceType": "script"
    }
  2. Dependiendo del tipo de módulo de procesamiento de nodo, y escribir el resultado final. Por ejemplo: 1 + 1 según el árbol de sintaxis, podemos escribir sobre el código del intérprete:
    function handleBinaryExpression(node) {
    switch( node.operator ) {
        case '+':
            return node.left.value + node.right.value;
        case '-':
            return node.left.value - node.right.value;
    }
    }

eval5: escrito mecanografiado intérprete JavaScript

Ejemplos

experiencia en línea

más ejemplos

Los siguientes son ejemplos de los resultados analíticos echarts4:
eval5: escrito mecanografiado intérprete JavaScript

Supongo que te gusta

Origin blog.51cto.com/7453775/2484869
Recomendado
Clasificación