Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

254
Vistas
¿Cómo determinar si una variable es inmutable o no en un AST?

Estoy trabajando con JavaScript AST generado por acornjs . Lo he normalizado de tal manera que cada expresión binaria se asigna a una variable temporal para aplanarla, y todas las variables se definen una por línea, cosas así. No es del todo relevante para la pregunta, sino solo algo de contexto. Estoy escribiendo un transpiler de JS a un lenguaje de programación personalizado. Ahora me gustaría anotar las variables en el idioma de destino si son mutables o no, algo así como en Rust.

¿Cómo puedo/debo hacer para resolver esto programáticamente? ¿Cómo identifico cada variable mutable e inmutable y las marco apropiadamente? ¿Cuál es el enfoque general? Parece abrumadoramente complicado al principio, pero no estoy seguro si me estoy perdiendo algo simple/obvio.

Yo pensaría algo como:

  1. Busque los nodos AssignmentExpression , donde el left es un Identifier . Marque ese identificador como inmutable si solo está en la posición left de una asignación una vez en todo el AST (después de atravesar/visitar cada nodo).
  2. ¿Qué pasa con los parámetros de la función? Supongo que realmente no importa en JS porque no puede reasignar una variable en el exterior cuando se pasa a una función como puede hacerlo en C. Pero técnicamente eso cuenta como mutable , ya que comenzó en la función param y fue reasignado Pero, ¿cómo manejar eso o conceptualizarlo?
  3. Verifique también los nodos MemberExpression , vea si la propiedad del objeto está reasignada.
  4. Eso es todo lo que puedo pensar.

¿Tengo esto sobre la derecha? ¿Cómo puedo hacer esto correctamente? Cualquier ayuda sería apreciada.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda