Commits

Cheikh Younes committed 625931d

Version finale

Comments (0)

Files changed (5)

bin/main.cmi

Binary file added.

bin/main.cmo

Binary file added.

bin/ocaml-ps-generator

Binary file added.
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generated-by" content="Markdown PRO, http://markdownpro.com"/>
+<title></title>
+<style type="text/css">
+html,body{margin:0;padding:0;}
+body {padding: 20px}
+h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,cite,code,del,dfn,em,img,q,s,samp,small,strike,strong,sub,sup,tt,var,dd,dl,dt,li,ol,ul,fieldset,form,label,legend,button,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:normal;font-style:normal;font-size:100%;line-height:1;font-family:inherit;}
+table{border-collapse:collapse;border-spacing:0;}
+ol,ul{list-style:none;}
+q:before,q:after,blockquote:before,blockquote:after{content:"";}
+html{overflow-y:scroll;font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
+a:focus{outline:thin dotted;}
+a:hover,a:active{outline:0;}
+article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
+audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
+audio:not([controls]){display:none;}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}
+sup{top:-0.5em;}
+sub{bottom:-0.25em;}
+img{border:0;-ms-interpolation-mode:bicubic;}
+button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;}
+button,input{line-height:normal;*overflow:visible;}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
+button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
+input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
+input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}
+textarea{overflow:auto;vertical-align:top;}
+html,body{background-color:#ffffff;}
+body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;color:#404040;}
+.container{width:940px;margin-left:auto;margin-right:auto;zoom:1;}.container:before,.container:after{display:table;content:"";zoom:1;*display:inline;}
+.container:after{clear:both;}
+.container-fluid{position:relative;min-width:940px;padding-left:20px;padding-right:20px;zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";zoom:1;*display:inline;}
+.container-fluid:after{clear:both;}
+.container-fluid>.sidebar{float:left;width:220px;}
+.container-fluid>.content{margin-left:240px;}
+a{color:#0069d6;text-decoration:none;line-height:inherit;font-weight:inherit;}a:hover{color:#00438a;text-decoration:underline;}
+.pull-right{float:right;}
+.pull-left{float:left;}
+.hide{display:none;}
+.show{display:block;}
+.row{zoom:1;margin-left:-20px;}.row:before,.row:after{display:table;content:"";zoom:1;*display:inline;}
+.row:after{clear:both;}
+p{font-size:13px;font-weight:normal;line-height:18px;margin-bottom:9px;}p small{font-size:11px;color:#bfbfbf;}
+h1,h2,h3,h4,h5,h6{font-weight:bold;color:#404040;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#bfbfbf;}
+h1{margin-bottom:18px;font-size:30px;line-height:36px;}h1 small{font-size:18px;}
+h2{font-size:24px;line-height:36px;}h2 small{font-size:14px;}
+h3,h4,h5,h6{line-height:36px;}
+h3{font-size:18px;}h3 small{font-size:14px;}
+h4{font-size:16px;}h4 small{font-size:12px;}
+h5{font-size:14px;}
+h6{font-size:13px;color:#bfbfbf;text-transform:uppercase;}
+ul,ol{margin:0 0 18px 25px;}
+ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
+ul{list-style:disc;}
+ol{list-style:decimal;}
+li{line-height:18px;color:#808080;}
+ul.unstyled{list-style:none;margin-left:0;}
+dl{margin-bottom:18px;}dl dt,dl dd{line-height:18px;}
+dl dt{font-weight:bold;}
+dl dd{margin-left:9px;}
+hr{margin:20px 0 19px;border:0;border-bottom:1px solid #eee;}
+strong{font-style:inherit;font-weight:bold;}
+em{font-style:italic;font-weight:inherit;line-height:inherit;}
+.muted{color:#bfbfbf;}
+blockquote{margin-bottom:18px;border-left:5px solid #eee;padding-left:15px;}blockquote p{font-size:14px;font-weight:300;line-height:18px;margin-bottom:0;}
+blockquote small{display:block;font-size:12px;font-weight:300;line-height:18px;color:#bfbfbf;}blockquote small:before{content:'\2014 \00A0';}
+address{display:block;line-height:18px;margin-bottom:18px;}
+code,pre{padding:0 3px 2px;font-family:Monaco, Andale Mono, Courier New, monospace;font-size:12px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+code{padding:1px 3px;}
+pre{background-color:#f5f5f5;display:block;padding:8.5px;margin:0 0 18px;line-height:18px;font-size:12px;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;white-space:pre;white-space:pre-wrap;word-wrap:break-word;}
+form{margin-bottom:18px;}
+fieldset{margin-bottom:18px;padding-top:18px;}fieldset legend{display:block;padding-left:150px;font-size:19.5px;line-height:1;color:#404040;*padding:0 0 5px 145px;*line-height:1.5;}
+form .clearfix{margin-bottom:18px;zoom:1;}form .clearfix:before,form .clearfix:after{display:table;content:"";zoom:1;*display:inline;}
+form .clearfix:after{clear:both;}
+label,input,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:normal;}
+label{padding-top:6px;font-size:13px;line-height:18px;float:left;width:130px;text-align:right;color:#404040;}
+form .input{margin-left:150px;}
+input[type=checkbox],input[type=radio]{cursor:pointer;}
+input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;font-size:13px;line-height:18px;color:#808080;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+input[type=checkbox],input[type=radio]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:none;}
+input[type=file]{background-color:#ffffff;padding:initial;border:initial;line-height:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+input[type=button],input[type=reset],input[type=submit]{width:auto;height:auto;}
+select,input[type=file]{height:27px;line-height:27px;*margin-top:4px;}
+select[multiple]{height:inherit;}
+textarea{height:auto;}
+.uneditable-input{background-color:#ffffff;display:block;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
+:-moz-placeholder{color:#bfbfbf;}
+::-webkit-input-placeholder{color:#bfbfbf;}
+input,textarea{-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);}
+input:focus,textarea:focus{outline:0;border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);}
+input[type=file]:focus,input[type=checkbox]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:1px dotted #666;}
+form div.clearfix.error{background:#fae5e3;padding:10px 0;margin:-10px 0 10px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}form div.clearfix.error>label,form div.clearfix.error span.help-inline,form div.clearfix.error span.help-block{color:#9d261d;}
+form div.clearfix.error input,form div.clearfix.error textarea{border-color:#c87872;-webkit-box-shadow:0 0 3px rgba(171, 41, 32, 0.25);-moz-box-shadow:0 0 3px rgba(171, 41, 32, 0.25);box-shadow:0 0 3px rgba(171, 41, 32, 0.25);}form div.clearfix.error input:focus,form div.clearfix.error textarea:focus{border-color:#b9554d;-webkit-box-shadow:0 0 6px rgba(171, 41, 32, 0.5);-moz-box-shadow:0 0 6px rgba(171, 41, 32, 0.5);box-shadow:0 0 6px rgba(171, 41, 32, 0.5);}
+form div.clearfix.error .input-prepend span.add-on,form div.clearfix.error .input-append span.add-on{background:#f4c8c5;border-color:#c87872;color:#b9554d;}
+table{width:100%;margin-bottom:18px;padding:0;border-collapse:separate;*border-collapse:collapse;font-size:13px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}table th,table td{padding:10px 10px 9px;line-height:18px;text-align:left;}
+table th{padding-top:9px;font-weight:bold;vertical-align:middle;border-bottom:1px solid #ddd;}
+table td{vertical-align:top;}
+table th+th,table td+td{border-left:1px solid #ddd;}
+table tr+tr td{border-top:1px solid #ddd;}
+table tbody tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
+table tbody tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
+table tbody tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
+table tbody tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
+.zebra-striped tbody tr:nth-child(odd) td{background-color:#f9f9f9;}
+.zebra-striped tbody tr:hover td{background-color:#f5f5f5;}
+.zebra-striped .header{cursor:pointer;}.zebra-striped .header:after{content:"";float:right;margin-top:7px;border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:hidden;}
+.zebra-striped .header:hover:after{visibility:visible;}
+footer{margin-top:17px;padding-top:17px;border-top:1px solid #eee;}
+.page-header{margin-bottom:17px;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}.page-header h1{margin-bottom:8px;}
+.close{float:right;color:#000000;font-size:20px;font-weight:bold;line-height:13.5px;text-shadow:0 1px 0 #ffffff;filter:alpha(opacity=20);-khtml-opacity:0.2;-moz-opacity:0.2;opacity:0.2;}.close:hover{color:#000000;text-decoration:none;filter:alpha(opacity=40);-khtml-opacity:0.4;-moz-opacity:0.4;opacity:0.4;}
+
+pre {
+	padding: 0;
+	margin: 10px 0px 10px;
+	overflow: auto; /*--If the Code exceeds the width, a scrolling is available--*/
+	overflow-Y: hidden;  /*--Hides vertical scroll created by IE--*/
+}
+pre code {
+	margin: 5px;  /*--Left Margin--*/
+	padding: 0px;
+	display: block;
+    line-height: 18px;
+}
+.center { text-align:center}
+.left {text-align:left}
+.right {text-align:right}
+
+</style><style type="text/css">
+html {
+	background-color: #f7f0f0;
+}
+
+body {
+	font-family: "Verdana", Arial, sans-serif;
+	
+	font-size: 13px;
+	margin: 10px;
+	background-color: #f8f1f1;
+	color: #333;
+}
+
+p {
+	font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
+	font-size: 14px;
+}
+
+a, a:visited {
+	color: #09c;
+}
+
+table, table th, table td {
+	border-color: #835b40;
+	padding: 5px;
+}
+
+table thead th {
+	color: whitesmoke;
+	background-color: #98694c;
+	padding: 5px;
+}
+
+a:hover {
+	color: #336699;
+	text-decoration: none;
+}
+
+h1 {
+	margin: 0px 0px 10px;	
+	letter-spacing:-2px;
+	font-weight: normal;
+	color: #835b40;
+}
+
+h2 {
+	border-bottom: 3px solid #FFCCAA;
+	margin: 5px 0px 15px;	
+		margin: 0px 0px 10px;	
+	letter-spacing:px;
+	font-size: 20px;
+	font-weight: normal;
+	color: #835b40;
+}
+
+h3, h4, h5, h6 {
+	color: #b17c59;
+}
+
+blockquote {
+	padding: 5px 10px;
+	border-left: 7px solid #ffccaa;
+	padding: 10px 0px 10px 10px;
+	margin: 15px 0px;
+	color:  #333;
+	font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
+	letter-spacing: px;
+	font-style: italic;
+	font-variant: normal;
+}
+
+ul, ol {
+	margin-bottom: 15px;
+}
+
+li {
+	padding: 3px;
+}
+
+code {
+	border: 1px solid rgba(249,172,130,0.66);
+	background-color: rgba(255,204,170,0.52);
+}
+
+pre {
+	background-color: #f1f1f1;
+}
+
+pre > code {
+	margin: 0px;
+	padding: 5px;
+	border: 0px;
+	background-color: #f1f1f1;
+}
+
+
+
+</style></head>
+<body>
+<h1 align="center"> Projet Ocaml-PostScript </h1>
+
+<h2 align="center"> Étudiant: Younes Cheikh </h2>
+
+<h3>Le contenu du répertoire principale:</h3>
+
+<pre><code>.
++-- annexe
+|   +-- reponses.pdf
++-- bin
+|   +-- main.cmi
+|   +-- main.cmo
+|   +-- ocaml-ps-generator
++-- ps
+|   +-- exercices
+|   |   +-- exercice10.ps
+|   |   +-- exercice12.ps
+|   |   +-- exercice14.ps
+|   |   +-- exercice6.ps
+|   |   +-- exercice9.ps
+|   +-- tests
+|       +-- p1.ps
+|       +-- p3.ps
++-- readme.md
++-- src
+    +-- main.ml
+</code></pre>
+
+<h3>Le fichier binaire:</h3>
+
+<p>le fichier binaire est compilé avec ocamlc sous mac os x (Darwin).</p>
+
+<h3>l&#39;execution du code:</h3>
+
+<pre><code>cd src/ 
+</code></pre>
+
+<pre><code>ocaml main.ml 
+</code></pre>
+
+<p>le programme génère 3 fichiers postscript: </p>
+
+<ul>
+<li>ps/exercices/<code>exercice12.ps</code> : le code postscript associé a l&#39;exemple de l&#39;exercice 12</li>
+</ul>
+
+<pre><code>For (&quot;i&quot;, Const 0.0, Const 20.0, Const 120.0,
+     Basic (Coord(Add(Const 100.0, Var &quot;i&quot;), Const 200.0),
+            SCircle(Add((Mul(Const 1.2, Var &quot;i&quot;)), Const 20.0))))
+</code></pre>
+
+<ul>
+<li>ps/tests/<code>p1.ps</code> : le code postscirpt associé a l&#39;exemple 1 </li>
+</ul>
+
+<pre><code>Prog([Decl(&quot;init&quot;, Const 0.0);
+      Decl(&quot;step&quot;, Const 10.0);
+      Decl(&quot;stop&quot;, Mul(Const 5.0, Var &quot;step&quot;));
+      ],
+       (For (&quot;i&quot;, Var &quot;init&quot;, Var &quot;step&quot;, Var &quot;stop&quot;,
+             For (&quot;j&quot;, Const 0.0, Const 20.0, Const 60.0,
+))
+))
+</code></pre>
+
+<ul>
+<li>ps/tests/<code>p3.ps</code> : le code postscript associé a l&#39;exemple 3 :</li>
+</ul>
+
+<pre><code>Prog([Decl(&quot;x&quot;, Const 10.);
+      Decl(&quot;y&quot;, Const 20.);
+      ],
+       (For (&quot;i&quot;, Const 0., Const 20., Const 100.,
+             Seq [
+               Assign(&quot;x&quot;, Add(Var &quot;x&quot;, Var &quot;i&quot;));
+               Assign(&quot;y&quot;, Add(Var &quot;y&quot;, Var &quot;i&quot;));
+               Basic (Coord(Var &quot;x&quot;, Var &quot;y&quot;), SRectangle(Const 3., Const 5.))
+]
+)))
+</code></pre>
+
+<h3>Le réponses :</h3>
+
+<p>Toutes les réponses au questions posées dans l&#39;énoncé sont dans le fichier <code>annexe/reponses.pdf</code> .</p>
+
+</body>
+</html>
+<h1 align="center"> Projet Ocaml-PostScript </h1>
+<h2 align="center"> Étudiant: Younes Cheikh </h2>
+
+###Le contenu du répertoire principale:
+```
+.
++-- annexe
+|   +-- reponses.pdf
++-- bin
+|   +-- main.cmi
+|   +-- main.cmo
+|   +-- ocaml-ps-generator
++-- ps
+|   +-- exercices
+|   |   +-- exercice10.ps
+|   |   +-- exercice12.ps
+|   |   +-- exercice14.ps
+|   |   +-- exercice6.ps
+|   |   +-- exercice9.ps
+|   +-- tests
+|       +-- p1.ps
+|       +-- p3.ps
++-- readme.md
++-- src
+    +-- main.ml
+```
+
+### Le fichier binaire:
+le fichier binaire est compilé avec ocamlc sous mac os x (Darwin).
+
+### l'execution du code: 
+
+```
+cd src/ 
+```
+```
+ocaml main.ml 
+```
+le programme génère 3 fichiers postscript: 
++ ps/exercices/`exercice12.ps` : le code postscript associé a l'exemple de l'exercice 12
+
+```
+For ("i", Const 0.0, Const 20.0, Const 120.0,
     Basic (Coord(Add(Const 100.0, Var "i"), Const 200.0),
            SCircle(Add((Mul(Const 1.2, Var "i")), Const 20.0))))
+```
+
++ ps/tests/`p1.ps` : le code postscirpt associé a l'exemple 1 
+
+```
+Prog([Decl("init", Const 0.0);
      Decl("step", Const 10.0);
      Decl("stop", Mul(Const 5.0, Var "step"));
      ],
       (For ("i", Var "init", Var "step", Var "stop",
             For ("j", Const 0.0, Const 20.0, Const 60.0,
+```
++ ps/tests/`p3.ps` : le code postscript associé a l'exemple 3 :
+
+```
+Prog([Decl("x", Const 10.);
      Decl("y", Const 20.);
      ],
       (For ("i", Const 0., Const 20., Const 100.,
             Seq [
               Assign("x", Add(Var "x", Var "i"));
               Assign("y", Add(Var "y", Var "i"));
               Basic (Coord(Var "x", Var "y"), SRectangle(Const 3., Const 5.))
+)))
+```
+
+### Le réponses :
+Toutes les réponses au questions posées dans l'énoncé sont dans le fichier `annexe/reponses.pdf` .
+
+
+