-
Notifications
You must be signed in to change notification settings - Fork 3
/
temp compil .txt
executable file
·86 lines (63 loc) · 2.58 KB
/
temp compil .txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
constEntier [0-9]*
constReel [0-9]+\.[0-9]+
"//".*
structure_generale:dec_algo mc_VAR partieDeclaration mc_DEBUT partieInstruction mc_FIN {printf("correcte");}
;
//-------------------------declaration de l'algorithme-----------
dec_algo: mc_ALGORITHME identificateur
;
//-------------Partie Declaration--------------
partieDeclaration: dec_var2 partieDeclaration
| dec_var2
|dec_tableau partieDeclaration
| dec_tableau
|dec_var partieDeclaration
| dec_var
;
//----------------les declarations------------
dec_tableau: identificateur crochet_gauche constante crochet_droit dp mc_entier pvg
|identificateur crochet_gauche constante crochet_droit dp mc_reel pvg
|identificateur crochet_gauche constante crochet_droit dp mc_chaine pvg
;
dec_var2: mc_entier ListeIDF pvg
| mc_reel ListeIDF pvg
| mc_chaine ListeIDF pvg
;
dec_var: identificateur dp mc_entier pvg
|identificateur dp mc_reel pvg
| identificateur dp mc_chaine pvg
;
ListeIDF: identificateur bar ListeIDF
| identificateur
;
//------------------PartieInstruction---------------------
partieInstruction: inst_aff partieInstruction
| inst_boucle partieInstruction
| inst_cond partieInstruction
| inst_aff
|inst_boucle
|inst_cond
;
//-------------------Boucle------------
inst_boucle: mc_Pour identificateur op_AFF constante mc_jusque constante mc_Faire partieInstruction mc_Fait
;
//------------------Instruction Condition-------------
inst_cond:mc_Faire inst_aff mc_SI parenthese_gauche cond parenthese_droite
;
//------------------Condition-------------
cond: identificateur op_comp constante
| constante op_comp constante
;
//------------------Instruction Affectation-----------
inst_aff: identificateur op_AFF exp_arith pvg
exp_arith: exp_arith op_arith identificateur { if ( $3==0 && strcmp("/",$2)==0) printf(" erreur : division par zero ligne %d colonne %d \n ",nb_ligne,nb_colonne-1); }
|exp_arith op_arith const_reel { if ( $3==0 && strcmp("/",$2)==0) printf(" erreur : division par zero ligne %d colonne %d \n ",nb_ligne,nb_colonne-1); }
|exp_arith op_arith const_entier { if ( $3==0 && strcmp("/",$2)==0) printf(" erreur : division par zero ligne %d colonne %d \n ",nb_ligne,nb_colonne-1); }
|identificateur
|const_reel
|const_entier
;
//----------------constante = entier ou reel -----------------
constante: const_entier
| const_reel
;