Skip to content

razken-hash/cube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2CS - SIL1 - Projet Compile Cube Language

Réalisation d’un mini compilateur

Realise par :

  • Medjahdi Islem
  • Moussaoui Abdelmouncif
  • Habouche Khaled Abderrahmène
  • Kenniche Abderrazak

2CS - SIL1 - 2023/2024

1.Description du Language Cube

1.1 Commentaires

1.2 Declarations

1.2.1 Les types

1.2.2 Declaration des variables simple :

1.2.3 Declaration des variables structures :

1.3 Les instructions de base :

1.3.1 Affectation :

1.3.2 Condition :

1.3.3 Boucles :

1.3.4 Les entrees / sorties :

1.4 Les opérateurs :

1.4.1 Les opérateurs logiques :

1.4.2 Les opérateurs arithmétiques :

1.4.3 Les opérateurs de comparaison :

1.4.4 Règles d'associativité :

1.Description du Language Cube

Un programme en Langage Cube se compose d'une séquence de déclarations et d'instructions.Chaque instruction doit occuper une seule ligne et se conclut par un point virgule ; Les blocs de code sont délimités par les mots-clés { et } .

1.1 Commentaires

Un commentaire est précédé par un ‘#’. Il doit être ignoré par le compilateur.

# This is a comment in Cube

1.2 Declarations

Une déclaration peut prendre la forme de variables simples telles que des entiers, des réels, des caractères ou des booléens, ainsi que de variables structurées telles que des tableaux ou des enregistrements.

1.2.1 Les types

Type Description Plages de valeurs
Integer Représente les nombres entiers. [ -2147483648 , 2147483647 ]
Real Représente les nombres réels. [ -3.4*10-38 , 3.4*1038 ]
Bool Représente les valeurs de vérité True ou False
Char Représente un seul caractère. Un caractère ASCII valide
Text Représente une chaîne de caractères

1.2.2 Declaration des variables simple :

Format Example
TYPE variable_name ; Integer amount;

Les noms de variables commencent par une lettre ou un trait de soulignement, et peuvent contenir des caractères alphanumériques ou underscores.

Utilisez des guillemets pour entourer les chaînes de caractères.

Évitez les mots réservés et les caractères spéciaux (!, @, #, $, %).

1.2.3 Declaration des variables structures :

Structure Format Example
Tableau TYPE nom[size]; Integer a[4];
Record

Record name : {{

TYPE Key;

}}

Record student : {{

Integer age;

}}

La taille d’un tableau doit être un entier positif

Pour accéder à un élément d’un tableau on utilise : table_name[index] avec index compris entre 0 et size-1

Pour accéder à un attribut d’un Record on utilise : record_name.attribute_name

1.3 Les instructions de base :

1.3.1 Affectation :

Format Example
variable_name = value ;

x = 10;

student.age = 21;

1.3.2 Condition :

Format Example

If ( condition ) {

# instructions if true

} else {

# instructions if false

}

If ( A > 10 ){

A = A + 1;

} else {

A = A - 1;

}

1.3.3 Boucles :

Format Example

Loop (init, condition , step){

# instruction to repeat

}

Loop (i=0, i<10 , i=i+1) {

Output(i);

}

While ( condition ) {

# instructions to repeat

}

While( i < 10 ){

Output(i);

}

On peut avoir des boucles imbriquées

1.3.4 Les entrees / sorties :

Instruction Example
TYPE var_name = Input(prompt); Real x = Input(‘Enter a number’);
Output(value); Output(“Hello World!”);

1.4 Les opérateurs :

1.4.1 Les opérateurs logiques :

Operateur Format Example
AND Expression1 and Expression2 (a>10) and ( isOk)
OR Expression1 or Expression2 (a>10) or (isOk)
NOT not (Expression) not (a>10)

L'associativité s'applique aux opérations AND,OR .

1.4.2 Les opérateurs arithmétiques :

Operateur Format Example
+ Expression1 + Expression2 10 + A
- Expression1 - Expression2 A - 2
* Expression1 * Expression2 (A+2) * 5
//

Expression1 // Expression2

# Expression2 <> zero

A // 3
% Expression1 % Expression2 A % 2 # modulo

L'associativité s'applique aux opérations + , *

1.4.3 Les opérateurs de comparaison :

> , >= , < , <= , <> , ==

1.4.4 Règles d'associativité :

Ce passage explique les priorités et les règles d'associativité dans l'évaluation des expressions mathématiques ou logiques.

1. Parenthèses : Les opérations à l'intérieur des parenthèses ont la priorité la plus élevée et sont évaluées en premier.

2. Not : L'opérateur logique "not" (négation logique) est appliqué ensuite.

3. And : L'opérateur logique "and" (conjonction logique) a une priorité inférieure à "not" et est évalué après.

4. Or : L'opérateur logique "or" (disjonction logique) est appliqué après "and".

5. Multiplication, Division, Modulo : Ces opérations ont une priorité supérieure à l'addition et à la soustraction.

6. Addition, Soustraction : Les opérations d'addition et de soustraction ont une priorité inférieure à la multiplication, à la division et au modulo.

7. Comparaisons : Les opérations de comparaison (comme <, >, <=, >=, ==, <>) sont effectuées en dernier, ayant la priorité la plus basse.

En respectant ces règles, l'ordre d'exécution des opérations est déterminé dans une expression complexe, assurant une évaluation correcte et cohérente.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors