La complejidad de la IDE de detección de errores y la auto-realización depende de la sintaxis del lenguaje?

StackOverflow https://stackoverflow.com//questions/10702652

  •  13-12-2019
  •  | 
  •  

Pregunta

Son menos los cheques o menos riguroso de análisis de código necesario para proporcionar el entorno de desarrollo de error de retroalimentación y de finalización automática de lenguajes de programación que están compuestos en gran parte de los legible frases y palabras (es decir,Python, VB.NET)?Esto está en contraste con C-estilo de idiomas, que dependen más de los símbolos y signos de puntuación para la estructura del código.

¿Fue útil?

Solución

Tengo experiencia y soy responsable de la construcción de decenas de lenguaje extremos delanteros.

Palabreo idiomas vspunctuationy idiomas generalmente son igual de duro para analizar y estáticamente analizar.

La gente que definir lenguajes de cualquier tipo ya han sido decoración durante décadas (por ejemplo, COBOL, desde 1958), o la construcción de sofisticados lenguajes (C++, Scala, Ruby) con tanto de sintaxis compleja y complejas de resolución de nombre y tipo de reglas de inferencia;el compilador de vendedores, a continuación, proceder a agregar oscuro sintaxis para apoyar a las cosas extrañas que hacen o proveer de un cliente de bloqueo (por ejemplo, MS "managed C++", declaraciones de DLL, etc.).Hay el tercer problema de la pésima definiciones;la parte superior de idiomas pueden tener reglas precisas acerca de cómo funcionan, pero muchos idiomas han descuidado las definiciones (por ejemplo, PHP), que crea la esquina oscura de los casos que tiene que ser resuelto por la dolorosa de la experimentación con la implementación real.

C++ ha sido nuestro peor, esp.con el C++11 comité de decisiones de una enorme reciente lío de cosas.Tenemos plena C++ analizadores, pero todavía están trabajando en el pleno la resolución de nombres para C++11 en la parte superior de nuestro C++98 aplicación.(El nombre de código de resolución es de unos 250.000 líneas de código y que no es suficiente!).

IBM, COBOL es un cercano segundo lugar;el lenguaje no es el único gigante, y hay todo tipo de curioso nombre de las reglas de resolución ("sin nombre puede referirse a un nombre particular sin título si la referencia es inequívoca" por Lo tanto, este es el nombre de una referencia inequívoca en este contexto?).

Una vez pasado el análisis y nombre/tipo de resolución, entonces se obtiene en el control de flujo, flujo de datos, puntos de análisis, gama anlaysis, llamada gráfica de la construcción, ...que generalmente son aproximadamente la misma cantidad de esfuerzo, ya que las fases anteriores;nos alejamos con menos por tener muy buenas bibliotecas que apoyan estas tareas.

Con todo esto como telón de fondo los análisis, usted puede comenzar a hacer "estático de análisis" de la smart tipo que quiere la gente.

Otro cartel señaló que la recuperación de errores de sintaxis y (énfasis) "continuar para generar mensajes de error significativos".Todo lo que puedo decir a esto es "Amén, hermano".Ver esto PARA responder https://stackoverflow.com/a/6657974/120163 para una discusión de lo que va mal cuando tienes "de los programas parciales", que es esencialmente lo que se obtiene al error de sintaxis reparaciones supongo que en una solución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top