Producir un diagrama de flujo de control total que realmente tenga en cuenta todos los problemas de lenguaje es más difícil de lo que parece. No solo debe identificar lo que parecen ser los "bloques básicos", sino que debe identificar las llamadas a función (más o menos fácil, pero identificar el objetivo puede ser más difícil), donde las operaciones entre bastidores como pueden ser los inicializadores de clase. y preocuparse por los puntos donde pueden ocurrir excepciones y donde se activa el control si se produce una excepción.
Si examina la mayoría de los idiomas cuidadosamente, también serán claros sobre el orden de evaluación de cálculos en expresiones, y esto importa si tiene dos efectos secundarios en una expresión; el flujo de control debe reflejar el orden (o la no orden, si no se define).
Tal vez sólo quieren una abstracción del control de flujo tener los elementos básicos y las condicionales. Eso es obviamente un poco más fácil.
En cualquiera de los casos (CFG simple o plena CFG), es necesario caminar por la AST, en cada punto de tener una referencia a posibles objetivos de control de flujo (por ejemplo, para la mayoría de los casos, tales como IF, hay dos objetivos de flujo: las cláusulas THEN y ELSE). En cada nodo, enlace ese nodo a la meta de flujo de control apropiado , la posibilidad de sustituir el flujo se dirige (por ejemplo, cuando se encuentra con un IF).
Hacer esto para la semántica de lenguaje completo de Java (o C) es bastante mucho trabajo. Quizás desee simplemente usar una herramienta que calcule este comercial. Ver http://www.semanticdesigns.com/Products/DMS/FlowAnalysis.html por lo que esto realmente se parece, que sale de nuestras herramientas.
usted debe poner aclaraciones de su pregunta en la cuestión, por lo que las respuestas pueden reflejar su pregunta, y no estar en los comentarios. – EfForEffort
"CFG ... obtener una representación en árbol de la fuente ..." ?? Si analiza el código fuente, obtiene una representación en árbol. Un CFG produciría un gráfico que conectara los nodos AST. –