Skip to content
This repository has been archived by the owner on Jul 7, 2022. It is now read-only.
/ m2_as_project Public archive

Static analyser for a tiny C-like language, implementing Available Expression, Reaching Definition, Very Busy Expression and Live Variable analysis

Notifications You must be signed in to change notification settings

Ladislus/m2_as_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projet Analyse Statique

Composition du groupe

  • Ladislas Walcak (2174867)
  • Corentin Hervochon (2171782)
  • Tom Ribardière (2171029)

Description des packages

  • ANTLR: Contient la grammaire ainsi que les parsers générés par ANTLR
  • AST: Contient les classes représentant l'AST
  • Utils:
    • ASTBuilder: Classe utilisant les parsers ANTLR pour construire l'AST
    • GlobalUtils: Classe contenant des fonctions utilitaires (ExitWithCode, parsing du fichier d'entrée, ...)
  • Visitor:
    • Printers: Contient les visiteurs Printer (-v ou --verbose) & ASTPrinter (-a ou --ast)
    • Flow: Contient les visiteurs et classes permettant de créer le flow du programme
    • Analyse: Contient les visiteurs de chacunes des analyses

Éxécution du programme et des différentes analyses

Lien projet https://github.com/Ladislus/m2_as_project

Pour lancer le projet, deux méthodes:

  • Depuis l'IDE intelliJ en lancant la fonction main de la classe Main.kt
  • En utilisant l'executable gradlew fourni par Gradle, exemple:
    ./gradlew --console=plain --quiet run --args "src/main/resources/programs/personnal/prog1 -v --ast -ae"

Liste des flags:

  • Options d'affichage et de rendu
    • -h ou --help -> Affiche l'aide
    • -v ou --verbose -> Affiche le programme exécuté (à l'aide du Printer)
    • -a ou --ast -> Affiche l'abstract syntax tree du programme analysé
    • -d ou --dot -> Converti le fichier de sortie XXX.dot en un XXX.png (nécessite d'avoir Graphviz installé et dans le path)
  • Les différentes analyses misent en place :
    • -ae -> Available Expression Analysis
    • -rd -> Reaching Definition Analysis
    • -vb -> Very Busy Expression Analysis
    • -lv -> Live Variable Analysis

Le retour pour ces différentes analyses sont les entrées pour tous les points du programme analysé, en réalisant l'algorithme du Maximum Fixed-point.
De plus, un fichier .dot correspondant au flow est automatiquement créé.

About

Static analyser for a tiny C-like language, implementing Available Expression, Reaching Definition, Very Busy Expression and Live Variable analysis

Topics

Resources

Stars

Watchers

Forks