12 |
%token NORME |
%token NORME |
13 |
%token CROCHET_OUV CROCHET_FER |
%token CROCHET_OUV CROCHET_FER |
14 |
%token PARENT_OUV PARENT_FER |
%token PARENT_OUV PARENT_FER |
15 |
%token DE |
%token DE EN |
16 |
%token POINT DROITE CERCLE SEGMENT |
%token POINT DROITE CERCLE SEGMENT |
17 |
%token QUELCONQUE |
%token QUELCONQUE |
18 |
%token LONGUEUR |
%token LONGUEUR |
20 |
%token MILIEU MEDIATRICE BISSECTRICE |
%token MILIEU MEDIATRICE BISSECTRICE |
21 |
%token PERPENDICULAIRE PARALLELE |
%token PERPENDICULAIRE PARALLELE |
22 |
%token ET A |
%token ET A |
23 |
|
%token ROUGE VERT BLEU NOIR |
24 |
%token CENTRE PASSANT PAR |
%token CENTRE PASSANT PAR |
25 |
%token <string> IDENTIFIANT |
%token <string> IDENTIFIANT |
26 |
%token <string> IDENTIFIANT2 |
%token <string> IDENTIFIANT2 |
40 |
| EFFACE identification_line EOL { suppr $2 } |
| EFFACE identification_line EOL { suppr $2 } |
41 |
|
|
42 |
declaration: |
declaration: |
43 |
SOIT declaration_point EOL { $2 } |
SOIT declaration_point EOL { ($2 Graphics.red) } |
44 |
| SLASH SOIT declaration_point EOL { CONSTRUCT $3 } |
| SOIT declaration_point couleur EOL { ($2 $3) } |
45 |
| SOIT declaration_line EOL { $2 } |
| SLASH SOIT declaration_point EOL { CONSTRUCT ($3 Graphics.transp) } |
46 |
| SLASH SOIT declaration_line EOL { CONSTRUCT $3 } |
| SOIT declaration_line EOL { ($2 Graphics.black) } |
47 |
| SOIT declaration_line2 EOL { $2 } |
| SOIT declaration_line couleur EOL { ($2 $3)} |
48 |
| SLASH SOIT declaration_line2 EOL { CONSTRUCT $3 } |
| SLASH SOIT declaration_line EOL { CONSTRUCT ($3 Graphics.transp)} |
49 |
| SOIT declaration_circle EOL { $2 } |
| SOIT declaration_line2 EOL { ($2 Graphics.black) } |
50 |
| SLASH SOIT declaration_circle EOL { CONSTRUCT $3 } |
| SOIT declaration_line2 couleur EOL { ($2 $3) } |
51 |
; |
| SLASH SOIT declaration_line2 EOL { CONSTRUCT ($3 Graphics.transp)} |
52 |
|
| SOIT declaration_circle EOL { ($2 Graphics.black) } |
53 |
|
| SOIT declaration_circle couleur EOL { ($2 $3) } |
54 |
|
| SLASH SOIT declaration_circle EOL { CONSTRUCT ($3 Graphics.transp)} |
55 |
|
; |
56 |
|
|
57 |
|
couleur: |
58 |
|
PARENT_OUV EN ROUGE PARENT_FER {Graphics.red} |
59 |
|
| PARENT_OUV EN VERT PARENT_FER {Graphics.green} |
60 |
|
| PARENT_OUV EN BLEU PARENT_FER {Graphics.blue} |
61 |
|
| PARENT_OUV EN NOIR PARENT_FER {Graphics.black} |
62 |
|
|
63 |
declaration_point: |
declaration_point: |
64 |
IDENTIFIANT UN POINT { point $1 } |
IDENTIFIANT UN POINT { point $1} |
65 |
| IDENTIFIANT UN POINT QUELCONQUE { point $1 } |
| IDENTIFIANT UN POINT QUELCONQUE { point $1} |
66 |
| IDENTIFIANT UN POINT DE IDENTIFIANT { point_on $1 $5 } |
| IDENTIFIANT UN POINT DE IDENTIFIANT { point_on $1 $5} |
67 |
| IDENTIFIANT LE MILIEU DE IDENTIFIANT { middle2 $1 $5 } |
| IDENTIFIANT LE MILIEU DE IDENTIFIANT { middle2 $1 $5} |
68 |
| IDENTIFIANT LE MILIEU DE IDENTIFIANT ET IDENTIFIANT { middle $1 $5 $7 } |
| IDENTIFIANT LE MILIEU DE IDENTIFIANT ET IDENTIFIANT { middle $1 $5 $7} |
69 |
| IDENTIFIANT INTERSECTION DE identification_line ET identification_line |
| IDENTIFIANT INTERSECTION DE identification_line ET identification_line |
70 |
{ intersection $1 $4 $6 } |
{ intersection $1 $4 $6} |
71 |
| IDENTIFIANT ET IDENTIFIANT INTERSECTION DE IDENTIFIANT ET IDENTIFIANT |
| IDENTIFIANT ET IDENTIFIANT INTERSECTION DE IDENTIFIANT ET IDENTIFIANT |
72 |
{ double_intersection $1 $3 $6 $8 } |
{ double_intersection $1 $3 $6 $8} |
73 |
| list_of_point NUM POINT |
| list_of_point NUM POINT |
74 |
{ if (List.length $1)==$2 |
{ if (List.length $1)==$2 |
75 |
then MULTIPLE $1 |
then multiple_point $1 |
76 |
else raise (Wrong_number_declaration ($2,"points")) |
else raise (Wrong_number_declaration ($2,"points")) |
77 |
} |
} |
78 |
| list_of_point NUM POINT QUELCONQUE |
| list_of_point NUM POINT QUELCONQUE |
79 |
{ if (List.length $1)==$2 |
{ if (List.length $1)==$2 |
80 |
then MULTIPLE $1 |
then multiple_point $1 |
81 |
else raise (Wrong_number_declaration ($2,"points")) |
else raise (Wrong_number_declaration ($2,"points")) |
82 |
} |
} |
83 |
; |
; |
89 |
|
|
90 |
declaration_line: |
declaration_line: |
91 |
| IDENTIFIANT UNE DROITE QUELCONQUE |
| IDENTIFIANT UNE DROITE QUELCONQUE |
92 |
{ any_line $1 } |
{ any_line $1} |
93 |
| IDENTIFIANT LA DROITE PASSANT PAR IDENTIFIANT ET IDENTIFIANT |
| IDENTIFIANT LA DROITE PASSANT PAR IDENTIFIANT ET IDENTIFIANT |
94 |
{ line $1 $6 $8 } |
{ line $1 $6 $8} |
95 |
| IDENTIFIANT LE SEGMENT PASSANT PAR IDENTIFIANT ET IDENTIFIANT |
| IDENTIFIANT LE SEGMENT PASSANT PAR IDENTIFIANT ET IDENTIFIANT |
96 |
{ segment $1 $6 $8 } |
{ segment $1 $6 $8} |
97 |
| IDENTIFIANT LA DROITE PARALLELE A identification_line PASSANT PAR IDENTIFIANT |
| IDENTIFIANT LA DROITE PARALLELE A identification_line PASSANT PAR IDENTIFIANT |
98 |
{ parallel $1 $6 $9 } |
{ parallel $1 $6 $9} |
99 |
| IDENTIFIANT LE SEGMENT PARALLELE A identification_line PASSANT PAR IDENTIFIANT ET DE LONGUEUR NORME IDENTIFIANT VIRGULE IDENTIFIANT NORME |
| IDENTIFIANT LE SEGMENT PARALLELE A identification_line PASSANT PAR IDENTIFIANT ET DE LONGUEUR NORME IDENTIFIANT VIRGULE IDENTIFIANT NORME |
100 |
{ parallel_seg $1 $6 $9 $14 $16 } |
{ parallel_seg $1 $6 $9 $14 $16} |
101 |
| IDENTIFIANT LA DROITE PERPENDICULAIRE A identification_line PASSANT PAR IDENTIFIANT |
| IDENTIFIANT LA DROITE PERPENDICULAIRE A identification_line PASSANT PAR IDENTIFIANT |
102 |
{ perpendicular $1 $6 $9 } |
{ perpendicular $1 $6 $9} |
103 |
| IDENTIFIANT LE SEGMENT PERPENDICULAIRE A identification_line PASSANT PAR IDENTIFIANT ET DE LONGUEUR NORME IDENTIFIANT VIRGULE IDENTIFIANT NORME |
| IDENTIFIANT LE SEGMENT PERPENDICULAIRE A identification_line PASSANT PAR IDENTIFIANT ET DE LONGUEUR NORME IDENTIFIANT VIRGULE IDENTIFIANT NORME |
104 |
{ perpendicular_seg $1 $6 $9 $14 $16 } |
{ perpendicular_seg $1 $6 $9 $14 $16} |
105 |
| IDENTIFIANT LA MEDIATRICE DE identification_line |
| IDENTIFIANT LA MEDIATRICE DE identification_line |
106 |
{ perpendicular_bissector $1 $5 } |
{ perpendicular_bissector $1 $5} |
107 |
| IDENTIFIANT LA BISSECTRICE DE IDENTIFIANT VIRGULE IDENTIFIANT VIRGULE IDENTIFIANT |
| IDENTIFIANT LA BISSECTRICE DE IDENTIFIANT VIRGULE IDENTIFIANT VIRGULE IDENTIFIANT |
108 |
{ bissecting $1 $5 $7 $9 } |
{ bissecting $1 $5 $7 $9} |
109 |
; |
; |
110 |
|
|
111 |
declaration_line2: |
declaration_line2: |
112 |
| LA DROITE PARENT_OUV IDENTIFIANT VIRGULE IDENTIFIANT PARENT_FER |
| LA DROITE PARENT_OUV IDENTIFIANT VIRGULE IDENTIFIANT PARENT_FER |
113 |
{ line ("("^$4^","^$6^")") $4 $6 } |
{ line ("("^$4^","^$6^")") $4 $6} |
114 |
| LA DROITE PARENT_OUV IDENTIFIANT IDENTIFIANT PARENT_FER |
| LA DROITE PARENT_OUV IDENTIFIANT IDENTIFIANT PARENT_FER |
115 |
{ line ("("^$4^","^$5^")") $4 $5 } |
{ line ("("^$4^","^$5^")") $4 $5} |
116 |
| LE SEGMENT CROCHET_OUV IDENTIFIANT VIRGULE IDENTIFIANT CROCHET_FER |
| LE SEGMENT CROCHET_OUV IDENTIFIANT VIRGULE IDENTIFIANT CROCHET_FER |
117 |
{ segment ("["^$4^","^$6^"]") $4 $6 } |
{ segment ("["^$4^","^$6^"]") $4 $6} |
118 |
| LE SEGMENT CROCHET_OUV IDENTIFIANT IDENTIFIANT CROCHET_FER |
| LE SEGMENT CROCHET_OUV IDENTIFIANT IDENTIFIANT CROCHET_FER |
119 |
{ segment ("["^$4^","^$5^"]") $4 $5 } |
{ segment ("["^$4^","^$5^"]") $4 $5} |
120 |
; |
; |
121 |
|
|
122 |
identification_line: |
identification_line: |
132 |
; |
; |
133 |
|
|
134 |
declaration_circle: |
declaration_circle: |
135 |
IDENTIFIANT LE CERCLE DE CENTRE IDENTIFIANT PASSANT PAR IDENTIFIANT { circle $1 $6 $9 } |
IDENTIFIANT LE CERCLE DE CENTRE IDENTIFIANT PASSANT PAR IDENTIFIANT { circle $1 $6 $9} |
136 |
|
|
137 |
|
|
138 |
|
|