/Compil_Yal

Projet scolaire de création de compilateur Yal -> MIPS

Primary LanguageJava

YAL

  • Commentaires

  • Instruction écrire

    • Constantes
    • Variables
    • Vérifier que la variable est déclarée
    • Si booléen il faut écrire "vrai" ou "faux"
  • Déclaration

    • Double déclaration
    • Allouer la pile
  • Affectation

    • Constante
    • Variable
    • Vérifier que la variable est déclarée
  • Lecture

    • Vérifier que la variable est déclarée
  • Expression quelconques

    • '-' (moins) EXP
    • non EXP -> requiert booléen
    • ( )
    • EXP OPER EXP
      • CSTE OPER CSTE
      • CSTE OPER EXP
      • EXP OPER CSTE
      • EXP OPER EXP
  • Opérations

    • Opérateurs entier X entier retourne entier
      • '+'
      • '-'
      • '*'
      • '/' DIV/0 INTERDITE
    • Comparateurs retourne booléens
    • entier X entier - '>' - '<'
      • booléen X booléen
        • 'et'
        • 'ou'
      • entier X entier | booléen X booléen
        • '=='
        • '!='
  • Instruction Conditionnelle

    • tant que
      • expression type booléen
      • obligatoirement évaluée avant toute entrée dans la boucle
    • si
      • expression type booléen
  • Instruction itérative

  • ORDRE des opérateurs:

    • '()', 'non', '*' et '/', '+' et '-', '<' et '>', '==' et '!=', 'et', 'ou'
    • Evaluer toutes les expression de gauche à droite par défaut
  • FONCTION

    • idf unique
    • au moins 1 instruction
    • params doivent etres vides
    • doit contenir un retourne
    • appel fonction
  • Retourne

    • resultat doit etre entier
    • retourne comme resultat la valeur de l'expression
    • provoque l'arret de la fonction
    • ne peut pas se trouver hors d'une fonction
  • Autre

    • une région ( bloc ) est délimité par les mots "debut" et "fin"
  • fonction

    • recursion
      • sans parametre
      • avec parametre
      • avec var locale
    • le passage des parametres se fait par valeur
    • avec variable locale
    • affectation de fonction dans une fonction
    • remettre a 0 les valeurs des variables declarées
  • faire les verification de fonction

  • Tableau

    • initialisé à 0

    • indice commence à 0

    • valeur de [ EXP ] strictement positive

      • verification pour la declaration
      • verification à l'accès (est doit être dans les bornes du tableau)
    • .[ EXP ] doit etre de type entier

    • declarer: entier [ EXP ] idf;

      • si le tableau est declaré dans le programme principal EXP doit etre une constante
    • affecter: idf [ EXP ] = EXP;

    • recuperer la longueur : idf.longueur ( retourne un entier )

    • appel : idf [ EXP ] EXP

      • appel d'un tab déclaré dans le PP depuis une fonction
    • deux types tableaux concordent SI ils ont la meme longueur ( affectation )

    • deux types tableaux sont égaux si ils ont la meme taille et les memes elements

    • inegalites de tableaux

    • operations entres tableaux autres que == et != interdites

    • cast d'un entier en tableau interdit (entier a; ecrire a[0]; ecrire a.longueur;)

    • ecrire tab interdit

    • verification de la taille d'un tableau